一、部署子站点
1—父站点web.config配置
新增并设定location段落
<configuration>
<location path="." allowOverride="false" inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\budgetBP.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
<system.webServer>
<directoryBrowse enabled="true" />
</system.webServer>
</configuration>
2—父站点IIS设置
应用程序池,该父级站点使用的应用程序池的特征是:无托管代码(独立)、集成。
3—子站web.config配置
修改子站点的配置文件。注意:hostingModel="outofprocess"
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\redis01.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="outofprocess" />
</system.webServer>
</location>
</configuration>
项目中使用的swagger的参数需要修改。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//sugar为虚拟目录的标记,与IIS虚拟目录的值呼应
app.UseSwaggerUI(c => c.SwaggerEndpoint("/sugar/swagger/V1/swagger.json", "RESTful API V1.0.01"));
}
4—子站IIS操作
在IIS左侧的网站下的目标主站名称上右键点出菜单
从操作过程看,选择“添加应用程序”和“添加虚拟目录”其实差不多。
此处,按啰嗦的方法来:
1—将主站的磁盘文件夹中建立新文件夹,将C#项目发布到此文件夹中。
注意:发布方式选择为“独立”!!!
注意2:子站点的框架版本与主站的版本要相同。???
2—添加虚拟目录
3—新增子站点的应用程序池
默认设定即可,此处设置:无托管代码、集成。
4—转换为应用程序
在子站点的名称上右键单击,选择“转换应用程序”。并指定应用程序池。
5—备注
5—1 C#项目
子站点的IP及端口设定均无法生效。
子站点的Program.cs中的CreatHostBuilder()中的webBuilder.UseIIS()要添加上。
5—2 IIS服务器
注意C#项目的代码包、Runtime版本。
二、netCore6 项目部署
1—C# 部署关注点
不要在Program.cs中使用app.Urls.Add(url)来绑定到地址。这会导致发布后IIS部署报错。
应使用appsettings.json配置文件
"Kestrel": {
"Endpoints": {
"Https": {
"Url": "http://*:5701"
},
"Http": {
"Url": "http://*:10001"
}
}
}
发布时采用了“独立”,win-x64的参数设定。
调整web.config的内容,默认的参数值会报错500.32
注意:hostingModel="inprocess"为原始值
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\sqlsugar01.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="outofprocess" />
</system.webServer>