默认模板ASP.NET Core Web应用程序未运行“自包含”

时间:2018-09-04 10:00:26

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

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

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

  

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

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

  

失败:请求匹配的多个操作导致歧义。   匹配的操作:页面:/索引失败:未处理的异常   发生:匹配了多个动作。
  符合以下动作   路线数据并满足所有约束条件:
   页面:/索引
   页面:/索引

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

所以(对我而言),自托管原则上似乎可以正常工作,因为可以访问“ Web服务器”,但是在部署中出现了问题...

要使自托管功能正常运行,我该怎么做?

2 个答案:

答案 0 :(得分:0)

路由中间件时出现问题,该中间件仅使用控制器和动作令牌来映射/执行动作,因此,如果在控制器中有几个同名动作,它将抛出一个模棱两可的异常。

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

答案 1 :(得分:0)

似乎我找到了这个问题:
通过部署,VS2017生成了其他文件 {AppName} .PrecompiledViews.dll 和{AppName} .PrecompiledViews.pdb,并将这些文件复制到publish目录中,这些文件已引起问题(多个定义)。 br /> 删除文件后,自托管功能现在可以使用了...
我不知道为什么要部署文件-如果我重新部署该应用程序,似乎文件没有再生成-因此(仅)第一次部署可能是一个问题...