关于 c#:IIS CLI 为我的项目生成带有站点的 applicationhost.config

IIS CLI generate applicationhost.config with site for my project

我有一个包含多个项目的 C# 解决方案,其中一个是由 IIS 运行的 Web 服务器。我在该项目的 csproj 文件中设置了 <UseGlobalApplicationHostFile>True</UseGlobalApplicationHostFile>

当我打开 Visual Studio 时,它会在 ~/Documents/IISExpress/config/applicationhost.config:

中生成它

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    <sites>
        <site name="WebSite1" id="1" serverAutoStart="true">
           
                <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\\WebSite1" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation=":8080:localhost" />
            </bindings>
        </site>
        <site name="SealingService" id="2">
           
                <virtualDirectory path="/" physicalPath="C:\\Users\\sehch\\Documents\\Paragon\\ParagonCore\\servers\\SealingService\\SealingService" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:61800:localhost" />
                <binding protocol="https" bindingInformation="*:44300:localhost" />
            </bindings>
        </site>
        <siteDefaults>
            <logFile logFormat="W3C" directory="%IIS_USER_HOME%\\Logs" />
            <traceFailedRequestsLogging directory="%IIS_USER_HOME%\\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
        </siteDefaults>
       
        <virtualDirectoryDefaults allowSubDirConfig="true" />
    </sites>

我希望能够从命令行使用 IIS Express 运行我的项目(用于构建服务器集成测试目的)。如何从命令行生成 applicationhost.config 的 SealingService 站点部分(无需打开 Visual Studio)?

我试过运行

1
"C:\\Program Files (x86)\\IIS Express\\iisexpress.exe"

在我的解决方案文件夹中,但它只生成 WebSite1 部分。


如果我理解正确,您要做的是将您指定的部分添加到 ~/Documents/IISExpress/config/applicationhost.config 文件中。

您可以使用 AppCmd.exe 命令行工具执行此操作:

1
2
3
"C:\\Program Files\\IIS Express\\appcmd.exe" add site /name:SealingService /bindings:"http/*:61800:localhost" /physicalPath:"C:\\Users\\sehch\\Documents\\Paragon\\ParagonCore\\servers\\SealingService\\SealingService"
"C:\\Program Files\\IIS Express\\appcmd.exe" set site /site.name:SealingService /[path='/'].applicationPool:Clr4IntegratedAppPool
"C:\\Program Files\\IIS Express\\appcmd.exe" set site /site.name:SealingService /+bindings.[protocol='https',bindingInformation='*:44300:localhost']

使用第一个命令我们创建站点,设置它的 http 绑定和它的物理路径;对于第二个,我们将其应用程序池设置为所需的;第三个我们添加了 https 绑定。

如果您使用 x86 版本的 IIS Express,您会在 C:\\\\\\\\Program Files (x86)\\\\\\\\IIS Express\\\\\\\\appcmd.exe 中找到 AppCmd