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

时间:2015-10-15 20:35:51

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

我刚刚更新到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”。 ]      System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+9922864      System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+90      System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context)+261

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

4 个答案:

答案 0 :(得分: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

的公告中了解此更改

答案 1 :(得分:5)

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

  1. 从中下载并安装最新的WebToolsExtentions http://www.microsoft.com/en-us/download/details.aspx?id=49442
  2. 创建新的ASP.NET5 Web应用程序项目
  3. 将文件从旧项目复制到新项目
  4. 我无法弄清楚如何修改现有项目。

答案 2 :(得分:1)

升级到测试版8之后我遇到了同样的问题,并通过从project.json删除以下依赖项来解决它:

"Microsoft.AspNet.Server.IIS": "1.0.0-beta7"
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta7"

并添加以下依赖项:

"Microsoft.AspNet.Server.Kestrel": "1.0.0-beta8"

我还更新了从beta7beta8的所有项目引用。

希望这有帮助。

答案 3 :(得分:0)

这是我的方式。有人可以找到有用的东西。我将这些行添加到我的project.json:

"commands": {
    "web": "Microsoft.AspNet.Hosting --config hosting.ini",
},

我改变了命令:

"commands": {
    "web": "Microsoft.AspNet.Hosting server=Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000",
    "kestrel": "Microsoft.AspNet.Server.Kestrel",
},

到此:

dnu restore

然后dnx web

现在您可以使用dnx kestrelSharedPreferences命令运行您的asp.net应用程序。这里描述了不同之处:https://github.com/aspnet/Home/wiki/Servers