我已经构建了一个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升级了这个项目。因此,我可能有一个旧条目或其他地方。
答案 0 :(得分:1)
我找到了解决问题的非常简单的答案。不知何故,我认为我必须将我的IIS站点的物理路径指向我的ASP.NET核心项目的wwwroot目录。这不正确物理路径必须指向wwwroot上方的完整发布目录。