在IIS Express上运行MVC6 Beta8应用程序

Ser*_*rov 6 iis-express asp.net-core-mvc asp.net-core

我刚刚更新到MVC6 Beta8.几个小时后修复代码再次编译,我遇到了一个问题,即应用程序无法在IIS Express下运行.我收到此错误消息:

[TypeLoadException:无法从程序集'Microsoft.Dnx.Host.Clr,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = adb9793829ddae60'加载类型'Microsoft.Dnx.Host.Clr.EntryPoint'.] System.Web.HttpRuntime .HostingInit(HostingEnvironmentFlags hostingFlags,PolicyLevel policyLevel,Exception appDomainCreationException)+303

[HttpException(0x80004005):无法从程序集"Microsoft.Dnx.Host.Clr,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = adb9793829ddae60'.]系统加载"Microsoft.Dnx.Host.Clr.EntryPoint"类型. Web.HttpRuntime.FirstRequestInit(HttpContext context)+9922864 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+90 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context)+261

我知道主机架构有变化.但这是否意味着我们不能再使用IIS express了,或者仅仅是更新或配置更改的问题?

cyg*_*nim 6

在升级到beta8时,您需要考虑IIS/IIS Express托管模型的一些重大更改.

在project.json文件中,从依赖项中删除它们:

  • "Microsoft.AspNet.Server.IIS"
  • "Microsoft.AspNet.Server.WebListener"

将以下内容添加到依赖项:

  • "Microsoft.AspNet.Server.Kestrel"
  • "Microsoft.AspNet.IISPlatformHandler

最后,在Startup.cs文件中,将以下内容添加到Configure方法:

  • app.UseIISPlatformHandler();

(我假设app是你的IApplicationBuilder的名称,你可以相应调整).

这会将新的IISPlatformHandler添加到管道并将流量定向到Kestrel服务器,从而绕过IIS和旧的Helios dnx主机.

您可以在Github的公告中了解此更改

  • 如果这仍然不起作用.检查wwwroot中的`web.config`文件.`system.webServer`部分应该只包含`httpPlatformHandler`处理程序及其配置.其他处理程序将阻止IISExpress启动.您可以创建一个新的空白项目来查看vanilla`web.config`文件. (2认同)

Ser*_*rov 5

以下是我解决问题的方法:

  1. http://www.microsoft.com/en-us/download/details.aspx?id=49442下载并安装最新的WebToolsExtentions
  2. 创建一个新的ASP.NET5 Web应用程序项目
  3. 将文件从旧项目复制到新项目

我无法弄清楚如何修改现有项目.

  • Project.json需要更新才能使用新的测试版. (2认同)