【问题标题】:ASP.Net Core doesn't find cshtmlASP.Net Core 找不到 cshtml
【发布时间】:2017-07-07 07:22:56
【问题描述】:

更新

我重构了整个问题,因为现在,我知道发生了什么,感谢 Daboul

当我在 VS15 内启动 ASP.Net Core exe 时,甚至在带有 dotnet run 的 cmd 行上它工作正常,但是当我尝试双击该 exe 运行时,它找不到 .cshtml .

奇怪的是,文件在那里,并且在被 vs15 执行时找到

有人可以向我解释我做错了什么吗?

我只是创建了一个 Asp.net Core Web App 并更改了 project.json 以生成像 herehere 这样的 .exe

【问题讨论】:

  • HTTP 500 错误意味着存在一些基本配置问题阻止站点/应用程序启动,或者在应用程序启动后发生内部故障。那是可怕的“内部服务器错误”代码,如果您查看日志,您可能会看到更详细的失败原因。实际上,您收到 HTTP 500 错误的事实证明您的应用实际上正在侦听端口 5000,否则您将看不到该回复...
  • 不幸的是没有日志,我不知道我应该做什么,因为据我所见,VS15只是像手动运行一样运行.exe,当我尝试运行它时手动抛出http 500,通过vs15就可以了

标签: asp.net visual-studio-2015 asp.net-core


【解决方案1】:

Visual Studio 和dotnet run 在您的代码所在的文件夹中运行您的应用程序。这意味着它可以访问 Views 文件夹和您在编码时正在编辑的 .cshtml 文件。

但是,当您运行 .exe 应用程序时,您可以从发布文件夹中执行此操作,例如 ...\Visual Studio 2015\Projects\MySolution\src\MyProject\bin\ Debug\netcoreapp1.0\publish 我建议你去这个文件夹并检查文件夹 Views 是否存在。如果没有,则意味着您只需要通过在 project.json 中添加 "**/*.cshtml" 来发布您的视图:

"publishOptions": {
    "include": [
        "wwwroot",
        "**/*.cshtml"
    ]
  }

然后使用dotnet publish 或您以前的方法再次发布。它应该可以解决您的问题。

仅供参考:现在可以使用 .NET Core 1.1 预编译所有视图。这意味着不需要发布 .cshtml 文件。

【讨论】:

    【解决方案2】:

    您可以看到一个正在开发中运行(一个正在运行),而另一个正在生产中运行。您应该首先尝试消除这种差异,看看它是否能解决问题。我使用 MYEXE_DEV.bat 文件来做到这一点:

    setlocal
    set ASPNETCORE_ENVIRONMENT=development
    yourbinary.exe
    endlocal
    

    试一试。

    更新: 好的,让我们尝试向前一点。当您在 Visual Studio 中按 F5 启动应用程序时,VS 通常(我猜它可能取决于您的模板)使用带有多个启动配置文件的 launchSettings.json 文件,例如下面我有两个预定义配置文件 IISExpress 和 WebApplication1,并且在.json 文件中,你可能有一些参数可以解释为什么它在 VS 下工作,但不是在双击 exe 时。

    【讨论】:

    • thix,这使它显示错误:InvalidOperationException: The view 'Index' was not found. The following locations were searched: /Views/Home/Index.cshtml /Views/Shared/Index.cshtml
    • 嗨。我试图更新一个建议,希望它可以帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 2019-01-31
    • 2017-04-05
    相关资源
    最近更新 更多