当我的ASP.NET最小API应用程序启动时,我试图启动一个网页(我的应用程序的静态主机URL)。
我试过几种方法来做这件事。
方法一
在Program.cs
中:
await app.StartAsync();
string urlToOpen = "http://localhost:" + builder.Configuration.GetSection("HostPort").Value + "/index.html";
Process.Start(new ProcessStartInfo(urlToOpen) { UseShellExecute = true });
await app.WaitForShutdownAsync();
字符串
在VS中调试时,或者在构建后运行.exe
时,这不起作用。但是,在以管理员身份运行构建的.exe
后,它确实起作用。
方法二
在Program.cs
中:
await app.StartAsync();
string urlToOpen = "http://localhost:" + builder.Configuration.GetSection("HostPort").Value + "/index.html";
System.Diagnostics.Process.Start("cmd", "/C start" + " " + urlToOpen);
await app.WaitForShutdownAsync();
型
(改为通过cmd打开)
同样,这仅在以管理员身份运行构建的.exe
时有效。
我的问题是,如何在不以管理员身份运行构建的.exe
的情况下使其工作?
1条答案
按热度按时间cu6pst1q1#
我设法让它工作,我认为问题是目录权限或类似的东西(在原始构建目录中运行应用程序时,我一直收到smartscreen警告)。我将项目保存在
C:\Users\User\source\repos
中。我将构建的文件复制到不同的目录中(例如桌面),应用程序现在打开浏览器,而不需要以管理员身份运行(智能屏幕警告也消失了,不确定是否相关)。