.NET Core Web api仅在IIS上调用ERR_CONNECTION_RESET - 其他调用正常工作

Rem*_*ima 7 c# asp.net iis asp.net-web-api asp.net-core

我现在完全失去了......

我有一个.NET Core Web应用程序,并在本地运行一切正常.有许多WebAPI端点,再次全部正常工作GET并正确返回JSON.

当我发布到IIS时,其中一个,只有一个端点停止工作并抛出(failed) net:ERR_CONNECTION_RESET(在Chrome中 - 其他浏览器抛出自己的错误).

奇怪的是,所有其他Web API调用都在同一个环境中并使用相同的上下文和EF数据服务调用同一个数据库.

我无法弄清楚的是,如何从Kestrel获取详细的日志到其他日志服务,Windows事件查看器,文本文件,电子邮件或其他任何东西!我没有使用太多的日志记录中间件,因为我们接近生产时打算将其连接起来.

在使用.NET核心Kestrel Web服务器的Windows 2012 R2上的IIS 8中尝试解决此问题的最佳方法是什么?

bir*_*win 12

我遇到了类似的问题.我正在使用Entity Framework Core 1.1,它不允许延迟加载.我的错误是由多对多关系中的对象图循环引起的.

由于EFCore 1.1不支持多对多开箱即用,我的模型有循环引用.我的JSON Serializer在尝试序列化从我的控制器类返回的数据时陷入无限循环.

如果您遇到此问题但其他解决方案都不起作用,我建议您更改Startup.cs文件ConfigureServices()方法.该行services.AddMvc();应更改为:

services.AddMvc()
    .AddJsonOptions(options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
Run Code Online (Sandbox Code Playgroud)


Tse*_*eng 4

只需编辑 web.config 并将其设置stdoutLogEnabled="true"为 true,并设置日志文件写入的路径即可。

<?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>
Run Code Online (Sandbox Code Playgroud)

但您至少需要启用控制台记录器,因为它基本上将控制台输出哑化到文件中。

public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();
    ...
}
Run Code Online (Sandbox Code Playgroud)

“Logging”部分在appsettings.json中配置,例如

  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
Run Code Online (Sandbox Code Playgroud)