通过命令行使用 IIS Express 从特定文件夹启动 ASP.net 网站

Start an ASP.net website from a specific folder using IIS Express via command line

我编写了 ASP.net MVC 需要作为 "normal" 应用程序(或尽可能接近它)安装的 Web 应用程序。我的意思是,我需要有一个 "double click on exe file and the webappp opens in default browser" 行为,或者尽可能接近那个行为。

习惯了Java,我愚蠢地认为我可以使用和嵌入网络服务器来运行它,但是经过一些研究(如果我在这里错了请纠正我)似乎这无法完成(只有 ASP.net Core 可以做到这一点,但我使用的是传统的 .NET Framework)并且 Web 应用程序需要在 IIS 或 IIS Express 中 运行。

所以,经过更多的研究,这个页面:

https://docs.microsoft.com/en-us/iis/extensions/using-iis-express/running-iis-express-from-the-command-line

似乎表明可以通过 IIS Express 从特定文件夹启动站点,方法是使用如下命令:

iisexpress.exe /path:"C:\Program Files\MyWebsite\bin"

上面的路径包含我编译的 ASP.net MVC 网站。

然而,这似乎不起作用。当我发出该命令时,我得到以下输出:

c:\Program Files\IIS Express>iisexpress.exe /path:"C:\Program Files\MyWebsite\bin"
Copied template config file 'c:\Program Files\IIS Express\AppServer\applicationhost.config' to 'C:\Users\MyUser\AppData\Local\Temp\iisexpress\applicationhost20179188941639.config'
Updated configuration file 'C:\Users\MyUser\AppData\Local\Temp\iisexpress\applicationhost20179188941639.config' with given cmd line info.
Starting IIS Express ...
Successfully registered URL "http://localhost:8080/" for site "Development Web Site" application "/"
Registration completed
IIS Express is running.
Enter 'Q' to stop IIS Express

所以基本上 IIS Express 启动了,但它不是 运行 从我指定的文件夹中打开我的网站,它 运行 是一些(大概)默认的空网站,称为 "Development Web Site"。我检查了一些网址,我可以确认那不是我的网站,而是一个没有页面或其他任何内容的空 shell。

我在这里错过了什么?如何通过命令行在 IIS Express 中启动网站?我是否必须先 "register" 该网站?

编辑: 经过更多研究,我发现我可以通过以下方式明确注册网站:

appcmd.exe add site /name:MySite /physicalPath:"C:\Program Files\MyWebsite\bin" /bindings:http://localhost:8081

然后开始:

iisexpress.exe /site:MySite

但这并没有解决问题:当我通过浏览器浏览该网站时,我得到的只是 404 错误,根本没有任何内容。

有一件事我还必须指出:由于 ASP.net 网站被编译成一个 DLL 文件,我不明白 registering/starting 使用文件夹路径有多简单。 .. IIS Express 如何理解从哪个 DLL 加载站点?似乎这里缺少一些关键部分...

经过进一步修补,我想通了。我指的是网站的 /bin 目录。相反,您必须指向父目录,即包含 Web.config 文件的目录。

因此,就我而言,我更改了:

iisexpress.exe /path:"C:\Program Files\MyWebsite\bin"

至:

iisexpress.exe /path:"C:\Program Files\MyWebsite"

现在可以正常工作了