升级至Optimizely CMS12后,如何通过JSON配置CLI启动IIS Express?
升级到Optimizely CMS12(基于.NET Core)后,原来依赖applicationhost.config和siteid启动IIS Express的bat脚本没法用了——因为.NET Core项目改用appsettings.json和launchSettings.json做配置,这里给你几个可行的解决方案:
方法一:用dotnet run直接启动(最推荐)
.NET Core自带Kestrel服务器,完全可以不用IIS Express,直接用dotnet命令启动,修改后的bat脚本如下:
@ECHO OFF ECHO starting site cd %~dp0\src\Site start dotnet run --launch-profile "Development" start npm run develop
--launch-profile "Development"会读取项目里launchSettings.json的配置,里面的端口、HTTPS设置、环境变量都可以提前配置好,和appsettings.json的配置完全兼容。
方法二:用dotnet iisexpress启动(贴近原IIS Express体验)
如果一定要用IIS Express,可以用官方的dotnet iisexpress命令,它会自动生成临时的配置文件,不用手动处理applicationhost.config。
首先确保项目安装了Microsoft.AspNetCore.Server.IISExpress包,然后修改bat脚本:
@ECHO OFF ECHO starting site via IIS Express cd %~dp0\src\Site start dotnet iisexpress --port 5000 --ssl-port 5001 start npm run develop
直接通过--port和--ssl-port指定HTTP/HTTPS端口就行,和原来用siteid绑定的效果一致。
方法三:手动创建配置文件启动(兼容原脚本逻辑)
如果必须保留iisexpress /config的调用方式,可以手动写一个简化版的applicationhost.config:
创建一个iisexpress-custom.config文件,内容替换成你的项目路径和端口:
<configuration> <system.applicationHost> <sites> <site name="OptimizelyCMS12Site" id="1"> <application path="/"> <virtualDirectory path="/" physicalPath="你的项目绝对路径,比如C:\Projects\ClientSite\src\Site" /> </application> <bindings> <binding protocol="http" bindingInformation="*:5000:localhost" /> <binding protocol="https" bindingInformation="*:5001:localhost" /> </bindings> </site> </sites> </system.applicationHost> </configuration>
然后修改bat脚本:
@ECHO OFF ECHO starting site with custom config start iisexpress /config:iisexpress-custom.config /siteid:1 cd %~dp0\src\Site start npm run develop
补充说明
Optimizely CMS12官方更推荐用Kestrel(也就是dotnet run)作为开发服务器,更贴合.NET Core的开发流程,也减少了配置依赖。如果只是想保持和原来一样的启动习惯,dotnet iisexpress是最省心的替代方案。
内容的提问来源于stack exchange,提问作者hattemaker

