ASP.NET Core集成到IIS时无法找到视图

时间:2016-08-09 15:59:53

标签: c# iis asp.net-core

我已经构建了一个ASP.NET Core应用程序,并希望在我的Win2008服务器上推出这个应用程序。如果我直接在kestrel中启动应用程序(双击包含main的exe),一切正常。但是,如果我通过IIS启动应用程序,我会得到以下异常:

  

失败:Microsoft.AspNetCore.Server.Kestrel [13]         连接ID“0HKU0DCR0LPSS”:应用程序抛出了未处理的异常。 System.InvalidOperationException:视图'登录'   没找到。搜索了以下位置:   /Views/Account/Login.cshtml /Views/Shared/Login.cshtml at   Microsoft.AspNetCore.Mvc.ViewEngines.ViewEngineResult.EnsureSuccessful(IEnumerable`1   originalLocations)   Microsoft.AspNetCore.Mvc.ViewResult.d__26.MoveNext()

这个例外已在本question中讨论过了。但我将我的文件与建议的解决方案进行了比较,但仍然得到错误。

我还注意到,如果我通过IIS启动应用程序,最初放在application.exe旁边的配置文件必须在wwwroot文件夹中移动。

以下是我的web.config的内容,它位于wwwroot文件夹中:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="..\ERMSClient.exe" arguments="" stdoutLogEnabled="true" stdoutLogFile="..\logs\stdout" />
  </system.webServer>
</configuration> 

这是我的project.json

{
  "dependencies": {
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0",
    "Microsoft.EntityFrameworkCore": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNetCore.Server.WebListener": "0.1.0",
    "Microsoft.AspNetCore.Http": "1.0.0",
    "Microsoft.AspNetCore.Authorization": "1.0.0",
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
    "Microsoft.AspNetCore.Mvc.Core": "1.0.0",
    "Microsoft.AspNetCore.Mvc.ApiExplorer": "1.0.0",
    "Microsoft.AspNetCore.Mvc.Abstractions": "1.0.0",
    "Microsoft.AspNetCore.Session": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Newtonsoft.Json": "9.0.1",
    "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "System.Web.Helpers.dll": "1.0.0",
    "AutoMapper": "5.0.2",
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": "1.0.0-preview2-final",
    "Microsoft.Extensions.Configuration": "1.0.0",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0"
  },
  "tools": {
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "net461": {
      "dependencies": {
        "d3Communicator": {
          "target": "project"
        }
      }
    }
  },

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

  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "appsettings.json",
      "web.config"
    ]
  },
  "scripts": {
    "prepublish": [ "npm install", "bower install" ],
    "postpublish": "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"
  }
}

此外,我必须提到我已经从ASP.NET RC1升级了这个项目。因此,我可能有一个旧条目或其他地方。

1 个答案:

答案 0 :(得分:1)

我找到了解决问题的非常简单的答案。不知何故,我认为我必须将我的IIS站点的物理路径指向我的ASP.NET核心项目的wwwroot目录。这不正确物理路径必须指向wwwroot上方的完整发布目录。