无法在IISExpress中启动ASP.NET Core RC2 Web应用程序

10

我在VS2015中创建了一个新的“ASP.NET Core Web Application (.NET Core)”项目。它没有任何问题地构建,所以我想进行测试。然而,在启动过程中,它出现了以下错误并崩溃:

Exception thrown: 'System.AggregateException' in Microsoft.AspNetCore.Server.Kestrel.dll
The program '[11608] dotnet.exe' has exited with code -1073741819 (0xc0000005) 'Access violation'.
The program '[15048] iisexpress.exe' has exited with code 0 (0x0).

我没有看到其他任何日志。我尝试进行调试,发现它在Program类中的WebHostBuilder.Run()方法期间崩溃了。这是框架的一部分,所以我无法深入研究。

请注意,当通过dotnet run命令运行时,程序可以正常运行。只有IISExpress不起作用。

我该如何调试此问题?

下面是project.json文件。(它由Visual Studio生成,我没有更改任何内容。)

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0-rc2-3002702",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Diagnostics": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview1-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc2-final"
  },

  "tools": {
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview1-final",
      "imports": "portable-net45+win8+dnxcore50"
    },
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": {
      "version": "1.0.0-preview1-final",
      "imports": "portable-net45+win8+dnxcore50"
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "dnxcore50",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "gcServer": true
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}
更新:我为Core RTM发布创建了一个新项目,这一次它起作用了。
更新:我创建了一个新的项目来发布Core RTM版本,这次它成功了。

你是否查看了文档中的常见错误区域 - Will Ray
我也有同样的问题...删除project.lock.json对我并没有解决这个问题...在asp.net core rc2中,VS根本没有可用于调试的选项...这不好。 - Chris Ray
算了,我没有使用host.UseIISIntegration()。将其与删除project.lock.json结合使用,它就可以工作了。 - Chris Ray
6个回答

8

另一个问题是您可能正在运行旧版本的框架。尝试进入可运行项目的根目录(project.json)并在命令提示符中输入:

dotnet run

3
我曾经遇到过这个问题,找到了很多有问题的文件并进行了修改(我发现了很多参考资料)。最后,尽管这很愚蠢,但是当我将所有的参考资料升级到1.1.0版本时,我没有在我的开发机器上安装实际的运行时1.1.0版本。谢谢! - johnny

7

我曾遇到和你一样的问题。对于我的情况,解决方案是关闭VS2015,删除文件project.lock.json,然后重新启动VS。(project.lock.json将会被自动生成)。

看起来调试器无法附加到应用程序上。在我的情况下,我在函数public Startup(IHostingEnvironment env)的第一行中添加了一个 throw new Exception("...");,这样应用程序就会崩溃而不会如预期那样在未处理的异常上中断。

重建project.lock.json后,调试器再次正常工作。


删除 project.lock.json 对我也有帮助。 - psulek

4

我已经更新到了dotnet core的RTM版本,使用新版本创建一个新项目是可以工作的。我猜这一定是个bug。


0

我遇到了同样的错误。解决方法是我的x64应用程序被设置为构建为x86。


0
当我运行我的项目(未使用IIS)时,遇到了相同的错误。经过一番调查,我发现appsettings.json中的服务器URL(在配置中使用)已经被占用了。我更改了URL,问题得以解决。希望能对某些人有所帮助!

0

对于那些遇到这个问题的人,我和提问者描述的一样遇到了完全相同的行为和错误信息。

显然有一些术语不能仅仅作为项目名称使用,例如webapp。(我通过将我的项目重命名为WebApp来解决了这个问题)

它已经被记录为一个错误,并且修复将包含在即将发布的版本中。

不幸的是,在第一次失败运行之后,重命名项目并不足以使其工作,因为IIS Express配置文件保留了旧条目。 只需编辑位于[PROJECT_ROOT]\.vs\config\applicationhost.config文件,并删除名为webappsite元素,重新启动VS并运行它。

希望能帮到你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接