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

Running MVC6 Beta8 app on IIS Express

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

[TypeLoadException: Could not load type 'Microsoft.Dnx.Host.Clr.EntryPoint' from assembly 'Microsoft.Dnx.Host.Clr, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.] System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags, PolicyLevel policyLevel, Exception appDomainCreationException) +303

[HttpException (0x80004005): Could not load type 'Microsoft.Dnx.Host.Clr.EntryPoint' from assembly 'Microsoft.Dnx.Host.Clr, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.] 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,或者这只是更新或配置更改的问题?

我是这样解决问题的:

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

我不知道如何修改现有项目。

我在升级到 beta 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"

我还将所有项目引用从 beta7 更新为 beta8

希望对您有所帮助。

IIS/IIS Express 托管模型有一些重大变化,您在升级到 beta8 时需要考虑这些变化。

在您的 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

上的公告中阅读此更改

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

"Microsoft.AspNet.IISPlatformHandler": "1.0.0-beta8",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta8",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-beta8",

我更改了以下命令:

"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 webdnx kestrel 命令 运行 您的 asp.net 应用程序。此处描述了差异:https://github.com/aspnet/Home/wiki/Servers