
ASP.NET Core WebAPIをローカルのIIS10に配置した時に、Process.Startでエクスプローラーを開けなくて困っています。
もしわかれば教えていただきたいです。
(やりたいこと)
ローカルPCのエクスプローラーを利用したいため、ASP.NET Core WebAPIをローカルPCでのみ実行します。
ローカルPCのIISのWEB APIに
http://localhost/api/Tests?value=C:\Users\username
のように入力してアクセスし、ローカルPCのエクスプローラーを開くことです。
VSのデバッグ時: 画面に「done」が表示され、エクスプローラーが開く。
IISに配置した時: 画面に「done」が表示され、エクスプローラーが開きません。
(環境)
Windows11
ASP.NET Core Web API(.NET 6(6.0.8))
Visual Studio Community 2022
IIS10 (ローカルのIIS) ※IIS有効化後、dotnet-hosting-6.0.8-win.exeをインストール
Google Chrome
(他に試したこと)
・IISのDefaultAppPoolの影響を考え、マネージドコードなし、クラシック、詳細設定のIDをLocalSystemに変更した。
・C:\inetpub\wwwroot のアクセス許可について
IUSR、IIS_IUSRSを書き込み/読み取り可で設定
ファイアウォールの影響があるかを一時的に無視したいため、Everyoneを一時的に書き込み/読み取り可で設定。
・実際のコードではNLogを使って、例外ログが出ていないか確認したがなかった。
(コード)
C#
1using Microsoft.AspNetCore.Mvc; 2using System.Diagnostics; 3 4namespace TestWebApi.Controllers { 5 6 [Route("api/[controller]")] 7 [ApiController] 8 public class TestsController : ControllerBase { 9 private readonly ILogger<TestsController> _logger; 10 11 public TestsController(ILogger<TestsController> logger) { 12 _logger = logger; 13 } 14 15 // GET api/<TestsController>/value 16 [HttpGet] 17 public string Get(string? value) { 18 if (value != null) { 19 Process process = new Process(); 20 process.StartInfo.UseShellExecute = true; 21 process.StartInfo.FileName = "EXPLORER.EXE"; 22 process.StartInfo.Arguments = @value; 23 process.Start(); 24 25 return "done"; 26 } 27 28 return "missing"; 29 } 30 } 31} 32
回答2件
あなたの回答
tips
プレビュー