我将应用程序部署到服务器时遇到问题。
我收到一个错误:
HTTP错误502.5 - 进程失败
在日志文件中我可以看到:
未处理的异常:System.IO.FileLoadException:无法加载文件或程序集'System.Core,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'。定位的程序集的清单定义与程序集引用不匹配。
这是我的project.json
{
"userSecretsId": "aspnet-travelingowe-c23d27a4-eb88-4b18-9b77-2a93f3b15119",
"dependencies": {
"Microsoft.AspNetCore.Diagnostics": "1.1.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
"Microsoft.AspNetCore.SpaServices": "1.1.0-*",
"Microsoft.AspNetCore.StaticFiles": "1.1.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
"Microsoft.Extensions.Configuration.Json": "1.1.0",
"Microsoft.Extensions.Configuration.CommandLine": "1.1.0",
"Microsoft.Extensions.Logging": "1.1.0",
"Microsoft.Extensions.Logging.Console": "1.1.0",
"Microsoft.Extensions.Logging.Debug": "1.1.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.1.0-preview4-final",
"type": "build"
},
"Microsoft.EntityFrameworkCore.Design": "1.1.0",
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
"Hangfire.AspNetCore": "1.6.8",
"HangFire.SqlServer": "1.6.8",
"Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
"Serilog": "2.4.0",
"Serilog.Extensions.Logging": "1.4.0-dev-10138",
"Serilog.Extensions.Logging.File": "1.0.1-dev-00008",
"MailKit": "1.10.2",
"Microsoft.AspNetCore.Mvc": "1.1.1",
"Microsoft.Extensions.Configuration.UserSecrets": "1.1.0",
"System.Xml.XDocument": "4.3.0",
"Microsoft.Extensions.Configuration.Binder": "1.1.0",
"System.Collections.Immutable": "1.3.0"
},
"tools": {
"Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final",
"Microsoft.DotNet.Watcher.Tools": "1.1.0-preview4-final",
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final",
"Microsoft.Extensions.SecretManager.Tools": "1.1.0-preview4-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final"
},
"frameworks": {
"netcoreapp1.1": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.1.0"
}
},
"imports":
"dnxcore50"
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true,
"compile": {
"exclude": [ "node_modules" ]
}
},
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
"publishOptions": {
"include": [
"appsettings.json",
"ClientApp/dist",
"Views",
"web.config",
"wwwroot"
],
"exclude": [
"wwwroot/dist/*.map"
]
},
"scripts": {
"prepublish": [
"npm install",
"node node_modules/webpack/bin/webpack.js --config webpack.config.vendor.js --env.prod",
"node node_modules/webpack/bin/webpack.js --env.prod"
],
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
},
"tooling": {
"defaultNamespace": "Travelingowe"
}
}
你知道怎么解决它吗?
更新:现在我有一个错误:
未处理的异常:System.IO.FileLoadException:无法加载文件或程序集'System.Core,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'。定位的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)在Microsoft.Extensions.Configuration.ConfigurationBuilder.Build上的Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1提供程序)的Microsoft.Extensions.Configuration.EnvironmentVariables.EnvironmentVariablesConfigurationProvider.Load(IDictionary envVariables)。 ()在E:\ Projects \ MyProject \ Program.cs中的MyProject.Program.Main(String [] args):第15行
如您所见,它使用我在本地使用的服务器上的本地路径。我该如何更改?
安装.NET Core Windows Server Hosting捆绑包后重新启动IIS了吗?
这就是我通常设置IIS来运行.net核心的方法:
资料来源:https://docs.microsoft.com/en-us/aspnet/core/publishing/iis
似乎project.json引用了.Net Core 1.1中仍然不支持的一个包。从project.json中删除"System.Collections.Immutable": "1.3.0"
,因为从Nuget gallery文档来看,它看起来还不支持.net Core 1.1
为了解决这个问题,我将这些行添加到.csproj文件中
<PropertyGroup>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
IIS无法运行ASP.NET核心站点 - HTTP错误502.5
你的问题是一个糟糕的web.config文件:
<aspNetCore requestTimeout="02:00:00"
processPath="%LAUNCHER_PATH%"
arguments="%LAUNCHER_ARGS%"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout"