鉴于包含两个网站的解决方案:
1)ASP.NET基于.NET 4.61
2).NET Core RC2
启动iisexpress for(2)后,MSVS更新applicationhost.config以包含一些看似与(1)不兼容的额外行。在iisexpress首次关闭然后尝试启动(1)之前,不会注意到这一点。
不兼容的行是:
<section name="aspNetCore" overrideModeDefault="Allow" />
<add name="AspNetCoreModule" image="C:\Program Files (x86)\Microsoft Web Tools\AspNetCoreModule\aspnetcore.dll" />
<add name="AspNetCoreModule" />
启动时(1),会出现一个对话框,说明&#34; IISExpress无法启动&#34;并写了一个事件:
模块DLL&#39; C:\ Program Files(x86)\ Microsoft Web Tools \ AspNetCoreModule \ aspnetcore.dll&#39;由于配置问题无法加载。当前配置仅支持加载为AMD64处理器体系结构构建的映像。数据字段包含错误编号。要详细了解此问题,包括如何解决此类处理器体系结构不匹配错误,请参阅http://go.microsoft.com/fwlink/?LinkId=29349。
可能的解决方案?
A)在启动(1)之前删除多余的行,如何自动实现?
B)为每个网站使用不同的applicationhost.config,是否有环境变量来设置它?
C)直接修复事件日志中报告的问题。不知何故,它在启动.NET Core RC2站点时起作用,这很奇怪。
D)使用恰好位于不同目录中的单独解决方案文件。这是不可取的,因为它是一个相当复杂的解决方案。
答案 0 :(得分:8)
如果您使用混合.NET Core RC2和ASP.NET&lt;创建解决方案,则会出现类似的问题。 5个项目,然后升级到.NET Core 1.0。 ASP.NET项目将不再运行。
要修复,请删除.vs \ config \ applicationhost.config并卸载并重新加载项目/解决方案以强制VS正确地重新生成它。 NET Core 1.0设置,然后将运行任何遗留的.NET内容。
我还发现事件查看器记录了当您尝试在VS中运行IIS Express时运行的确切命令行,因此您可以抓住它并将其粘贴在命令提示符中以从IIS Express中获取错误输出,尤其是如果事件查看器中没有错误,则非常有用。
答案 1 :(得分:2)
这是有效的 - 按照建议(B):
1)对于指定“图像”的添加标记,添加
preCondition="bitness32"
2)添加位置块(如果尚不存在),请指定remove:
<location path="Your_NonCore_SiteName">
<system.webServer>
<modules>
<remove name="AspNetCoreModule" />
</modules>
</system.webServer>
</location>
不确定为什么会这样,因为bitness32似乎向后退了(因为原始错误消息说它是amd64)。
现在两个站点可以同时启动,MSVS不会覆盖这些手动编辑。
自担风险使用!希望在下一个版本中获得更好的答案或改进。
答案 2 :(得分:0)
这应该由最新的工具(VS 2015 Update 3和DotNetCore.1.0.0-VS2015Tools.Preview2)修复https://www.microsoft.com/net/core#windows
AspNetCoreModule现在有一个适用于IIS Express的安装程序(包含在新工具中)。