.NET Core RC2 applicationhost.config与ASP.NET .NET 4.6不兼容?

时间:2016-05-28 03:56:27

标签: asp.net asp.net-core iis-express .net-core-rc2

鉴于包含两个网站的解决方案:

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)使用恰好位于不同目录中的单独解决方案文件。这是不可取的,因为它是一个相当复杂的解决方案。

3 个答案:

答案 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的安装程序(包含在新工具中)。