【问题标题】:Web application won't runWeb 应用程序无法运行
【发布时间】:2017-05-15 15:19:58
【问题描述】:

ASP.NET Core,而非框架

我不久前创建了一个 Web API 项目,作为我们使用的一些项目的本地开发主机。这一直运作良好。我不知道我是否在工作和不工作之间安装了 VS 2017 更新。现在,当我启动它时,它会启动 Web 浏览器,然后立即终止 Web 应用程序(参见输出)。

我决定尝试通过创建一个新项目来重建我的项目,但令我惊讶的是,我在这里也遇到了问题。我已经包含了可以在我的机器上产生问题的输出和步骤。

输出:

code:-32000
message:No script for id: 35
'dotnet.exe' (CoreCLR: DefaultDomain): Loaded 'C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\1.1.2\System.Private.CoreLib.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
The program '[18760] dotnet.exe: Program Trace' has exited with code 0 (0x0).
The program '[18760] dotnet.exe' has exited with code -532462766 (0xe0434352).
The program '[7360] iisexpress.exe: Program Trace' has exited with code 0 (0x0).
The program '[18824] chrome.exe: WebKit' has exited with code -1 (0xffffffff).
The program '[7360] iisexpress.exe' has exited with code 0 (0x0).

重现步骤:

1) Select File | New Project
2) Select Templates > Visual C# > .NET Core > ASP.NET Core Web Application (.NET Core)
3) Click OK
4) Select Web API
5) Verify that "Enable Docker Support" is unchecked and "Authentication" is "No Authentication"
5) Click OK
6) Select Debug | Start Debugging
7) Wait ~20 seconds for the project co crash

我尝试在“Main”方法的左大括号上放置一个断点,但这从未被命中。

使用 dotnet run 的控制台输出:

C:\Projects\WebApplication1>dotnet run
The current project is not valid because of the following errors:
C:\Projects\WebApplication1(1,0): error DOTNET1017: Project file does not exist 'C:\Projects\WebApplication1\project.json'.


C:\Projects\WebApplication1>

我不确定为什么 project.json 是预期的,因为这些文件被取消了,取而代之的是 .csproj 文件。查看应用程序属性,我可以看到目标框架是 .NETCoreApp1.1。为了解决这个问题,我安装了 .NET Core 运行时(x86 和 x64)版本 1.0.5 和 1.1.2,但我想只需要 1.1.2 版本。

我还运行了 dotnet --info 并得到以下输出:

C:\Users\john\Documents\Visual Studio 2017\Projects\WebApplication1>dotnet --info
.NET Command Line Tools (1.0.0-preview2-003121)

Product Information:
 Version:            1.0.0-preview2-003121
 Commit SHA-1 hash:  1e9d529bc5

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.14393
 OS Platform: Windows
 RID:         win10-x86

已安装的 SDK 版本(根据程序和功能):

.NET Core SDK 1.0.0 (x64) Installer (x64)
.NET Core SDK 1.0.1 (x64)
.NET Core SDK 1.0.3 (x64)
.NET Core SDK 1.0.4 (x64)
Microsoft .NET Core 1.0.0 - SDK Preview 2 (x86)
Microsoft .NET Core 1.0.0 - SDK Preview 2 (x64)
Microsoft .NET Core 1.0.1 - SDK Preview 1.0.0 Preview 2-003131 (x64)
Microsoft .NET Core 1.0.1 - VS 2015 Tooling Preview 2-003131
Microsoft .NET Core 1.0.5 - Runtime (x64)
Microsoft .NET Core 1.0.5 - Runtime (x86)
Microsoft .NET Core 1.1.2 - Runtime (x64)
Microsoft .NET Core 1.1.2 - Runtime (x86)

其他信息:

  • 我正在运行 Windows 10 Enterprise N
  • 我的开发环境是 Visual Studio Enterprise 2017 版本 15.2 (26430.6) 版本。

如何让它再次工作?

【问题讨论】:

    标签: c# asp.net-core .net-core


    【解决方案1】:

    32 位 (x86) dotnet.exe 主机很可能在 64 位主机之前位于您的 PATH 上。由于目前唯一的 32 位 SDK 是 preview2 版本,因此您收到有关缺少 project.json 文件的错误。 当您重新运行安装程序时,这可能会解决路径问题(可能只是偶然)。

    您可以检查系统的 PATH 环境变量以查看 C:\Program Files\dotnet 文件夹是否列在 C:\Program Files (x86)\dotnet 之前。 VS 2017 预览版(~RC3 时间)习惯于将 32 位的放在 64 位之前的路径上,这导致了很多问题。

    【讨论】:

    • 我没有意识到 .NET Core 已经走上了这条路。我可能天真地假设,当使用“run”时,“dotnet”是版本选择器的前面。如果它再次发生,我会看看这个。谢谢。
    • 问题是主机(“muxer”)进程一旦加载就不能真正在32位和64位之间切换,需要弄清楚该怎么做。但是 2.0 afaik 的布局将会改变..
    【解决方案2】:

    编译完已安装的框架版本列表后,我觉得可能有点杂乱无章,鉴于dotnet --info的输出,我不禁想知道是否可能没有某种版本选择问题。

    我卸载了程序和功能中列出的所有 SDK 版本,只卸载了 re-downloaded .NET Core SDK 的 Windows (x64) 安装程序。

    这似乎已经解决了这个问题,尽管我不确定发生了什么样的更新来触发它从“正常工作”变为“甚至无法达到 Main 方法”。不幸的是,它似乎越来越适合微软的课程。

    【讨论】:

      【解决方案3】:

      我认为您需要在本地启用 IIS 才能使 IIS Express 工作。

      如果 IIS 已启用,您可能需要通过以下链接解决问题。

      控制面板 > 程序和功能 >

      Turn Windows Features on or off.
      

      点击Internet Information Services.

      不用担心子节点。单击确定。

      重启你的电脑。

      但是,如果这不起作用,请阅读这篇文章:http://gauravmantri.com/2013/02/05/workaround-for-iis-express-crashing-when-running-windows-azure-cloud-service-web-role-with-multiple-instances-in-windows-azure-sdk-1-8-compute-emulator/

      【讨论】:

      • 虽然确实已安装,但我不相信在这种情况下使用 IIS Express。此外,删除 .NET Core SDK 并重新安装当前可用的 MS 下载似乎解决了我的问题。
      • @john 真的吗?意味着重新安装 .Net Core 解决了这个问题?
      • 我会注意的:-D
      • 是的,完全正确。我目前的假设是更新破坏了版本选择(即使用哪个 SDK),这就是它停止工作的原因。将它们全部删除并仅安装最新版本似乎已经为它提供了重新开始工作所需的干净状态。
      • 好的!太酷了……@john 感谢您分享有关您如何解决问题的信息。
      【解决方案4】:

      我认为您需要在 Visual Studio 中禁用 Just My Code。

      要禁用“仅我的代码”,请在“调试”菜单上选择选项和设置。在 Debugging / General 节点中,清除 Enable Just My Code。

      并始终确保在调试时以调试模式运行您的项目,并确保您的 Web-API 项目在所有项目中设为默认解决方案。

      希望它能解决你的问题。

      【讨论】:

        猜你喜欢
        • 2018-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-21
        相关资源
        最近更新 更多