我现在是在一个完全丧失...
我有一个.NET核心的Web应用程序,并在本地运行一切正常。有许多的WebAPI终点,又都按预期与GET
并正确返回JSON工作。
当我发布到IIS,一个,只有这些端点的一个停止工作,并抛出(failed) net:ERR_CONNECTION_RESET
(在Chrome - 其他浏览器中抛出自己的错误)。
什么是奇特的是,所有其他Web API调用的工作,都在相同的环境和调用同一个数据库,使用相同的背景和EF数据服务。
我想不通,是如何从红隼详细的日志到一些其他的日志服务,无论是Windows事件查看器,文本文件,电子邮件或其他任何东西!我没有用太多的日志中间件,并打算钩住了,因为我们更接近生产。
什么是尝试和与.NET核心Kestrel的Web服务器上的Windows 2012 R2中的IIS 8解决此最好的方法是什么?
只需编辑你的web.config并设置stdoutLogEnabled="true"
to真,以及设置在日志文件将被写入的路径。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--
Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
-->
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
</system.webServer>
</configuration>
但是,你需要至少启用控制台记录器,因为它基本上在dumbs控制台输出到文件中。
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
...
}
的“记录”部被配置在appsettings.json,如
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
我有一个类似的问题。我使用实体框架的核心1.1,不允许延迟加载。我的错误是从在一个多到多的关系的对象图环路引起的。
作为EFCore 1.1不支持多到许多开箱即用,我的模型有循环引用。我的JSON序列成为停留在一个无限循环,因为它试图从序列化我的控制器类返回的数据。
如果你有这个问题,并没有其他的解决方案的工作,我建议改变你的Startup.cs文件ConfigureServices()
方法。该生产线services.AddMvc();
应改为如下:
services.AddMvc()
.AddJsonOptions(options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
您可以使用内置的日志记录中间件红隼。确保日志记录在web.config中通过stdoutLogEnabled启用,像这样:
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
而你startup.cs包含以下代码:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(LogLevel.Trace);
}
编辑Startup.cs和替换这样的:services.AddMvc()
有:
services.AddMvc().AddJsonOptions(y => y.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
我在startup.cs添加下面的代码和它的工作。
services.AddMvc()
.AddJsonOptions(options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
我用的是实体框架的核心(父子关系)自引用表。
我知道这已经被标记为回答,但以上都不是为我工作。对我来说,解决办法是从更新的dotnet核2.1的Web项目2.2和更新DOTNET核心SDK为好。