【问题标题】:Default template ASP.NET Core Web Application don’t run “Self-Contained”默认模板 ASP.NET Core Web 应用程序不运行“自包含”
【发布时间】:2018-09-04 10:00:25
【问题描述】:

我已经使用 Visual Studio 2017 15.7.5 创建了一个 ASP.NET Core Web 应用程序(Asp.NET Core 2.0,Web 应用程序)。
我还使用发布方法“文件系统”配置“发布配置文件”,配置:“发布”,目标框架:“netcoreapp2.0”,部署模式:“自包含”,目标运行时:“win-x86”。

项目创建时没有问题(我没有做任何更改),并且在调试模式下使用 IIS Express 运行时没有问题。
如果我部署它,会创建一个“app”.exe,我可以启动它然后查看控制台:

托管环境:生产
内容根路径:“路径”\publish
现在收听http://localhost:5000

但是,如果我从浏览器访问http://localhost:5000,我可以在控制台中看到如下错误消息:

失败:请求匹配多个操作导致歧义。 匹配动作: Page: / Index fail: 一个未处理的异常有 发生:匹配多个操作。
以下动作匹配 路由数据并满足所有约束:
页面:/索引
页面:/索引

浏览器显示 http 错误 404(未找到)或 500(服务器错误)。

所以(对我来说)似乎自托管主要工作,因为可以访问“网络服务器”,但部署中出现问题......

我必须做些什么才能使自托管工作?

【问题讨论】:

    标签: visual-studio-2017 asp.net-core-2.0


    【解决方案1】:

    路由中间件存在问题,它仅使用控制器和动作令牌来映射/执行动作,因此,如果您在具有相同名称的控制器中有一些动作 - 它会抛出一个模棱两可的异常。

    要解决此问题,您可以开始使用[HttpGet][HttpPost] 等或[Route] 属性

    【讨论】:

    • 感谢您的回答,但我不明白您的意思。正如我所写的那样,该应用程序在 IIS Express 上运行没有问题 - 只有在部署并作为自托管应用程序启动后才会出现问题。我想,我找到了原因(见我下面的帖子)。
    【解决方案2】:

    我好像发现了问题:
    通过部署,VS2017 生成了附加文件 {AppName}.PrecompiledViews.dll 和 {AppName}.PrecompiledViews.pdb 并复制到发布目录中,导致问题(多个定义)。 删除文件后,自托管现在可以工作...
    我不知道,为什么要部署文件 - 如果我重新部署应用程序,似乎文件不会再次生成 - 所以这可能是(仅)第一次部署的问题......

    【讨论】:

      猜你喜欢
      • 2017-03-06
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-03
      • 1970-01-01
      • 2021-06-23
      相关资源
      最近更新 更多