Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker AllowSynchronousIO设置为true,但仍获得异常_Docker_Asp.net Core_Io - Fatal编程技术网

Docker AllowSynchronousIO设置为true,但仍获得异常

Docker AllowSynchronousIO设置为true,但仍获得异常,docker,asp.net-core,io,Docker,Asp.net Core,Io,我有一个输出格式化程序,它使用XSLT将消息格式化为XML并添加一些内容 公共重写任务WriteResponseBodyAsync(OutputFormatterWriteContext) { 尝试 { var response=context.HttpContext.response; 字符串xml=GetXMLFromObject(context.Object); var accept=context.HttpContext.Request.Headers[“accept”].FirstOr

我有一个输出格式化程序,它使用XSLT将消息格式化为XML并添加一些内容

公共重写任务WriteResponseBodyAsync(OutputFormatterWriteContext)
{
尝试
{
var response=context.HttpContext.response;
字符串xml=GetXMLFromObject(context.Object);
var accept=context.HttpContext.Request.Headers[“accept”].FirstOrDefault();
response.ContentType=accept;
var templateFile=context.HttpContext.Request.Headers[“Template”].FirstOrDefault();
ConvertToStream(模板文件、xml、response.Body);
返回Task.CompletedTask;
}
抓住
{
投掷;
}
}
我已将IISServerOptions和KestrelServerOptions配置为启用SynchronousIO

            services.Configure<IISServerOptions>(options =>
            {
                options.AllowSynchronousIO = true;
            });
            services.Configure<KestrelServerOptions>(options =>
            {
                options.AllowSynchronousIO = true;
            });

从外观上看,您似乎已经在启动时正确地允许了同步IO,因此我建议您尝试
docker compose-up--build
。这将重建一切,因为Docker倾向于使用它已经拥有的东西,所以即使您更改了某些东西,这些更改也可能不存在

fail: Project.Api.Middleware.ExceptionMiddleware[0]
      Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead.
System.InvalidOperationException: Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead.
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpResponseStream.Flush()
   at System.Xml.XmlUtf8RawTextWriter.Close()
   at System.Xml.XmlRawWriter.Close(WriteState currentState)
   at System.Xml.XmlWellFormedWriter.Close()
   at System.Xml.XmlWriter.Dispose(Boolean disposing)
   at System.Xml.XmlWriter.Dispose()
   at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, Stream results)
   at Project.Common.ExcelProvider.ConvertToStream(String templateFile, String data, Stream stream) in /src/Project.Common/ExcelProvider.cs:line 28
   at Project.Api.Formatters.ExcelOutputFormatter.WriteResponseBodyAsync(OutputFormatterWriteContext context) in /src/Project.Api/Formatters/ExcelOutputFormatter.cs:line 34
   at Microsoft.AspNetCore.Mvc.Formatters.OutputFormatter.WriteAsync(OutputFormatterWriteContext context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor.ExecuteAsyncCore(ActionContext context, ObjectResult result, Type objectType, Object value)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor.ExecuteAsync(ActionContext context, ObjectResult result)
   at Microsoft.AspNetCore.Mvc.ObjectResult.ExecuteResultAsync(ActionContext context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultAsync(IActionResult result)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextResultFilterAsync[TFilter,TFilterAsync]()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Project.Api.Middleware.ExceptionMiddleware.InvokeAsync(HttpContext context) in /src/Project.Api/Middleware/ExceptionMiddleware.cs:line 24
fail: Microsoft.AspNetCore.Server.Kestrel[13]
      Connection id "0HM2OMURFR65H", Request id "0HM2OMURFR65H:00000001": An unhandled exception was thrown by the application.
System.ArgumentException: An item with the same key has already been added.
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders.ThrowDuplicateKeyException()
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders.System.Collections.Generic.IDictionary<System.String,Microsoft.Extensions.Primitives.StringValues>.Add(String key, StringValues value)
   at Project.Api.Middleware.ExceptionMiddleware.HandleExceptionAsync(HttpContext context, Exception ex) in /src/Project.Api/Middleware/ExceptionMiddleware.cs:line 42
   at Project.Api.Middleware.ExceptionMiddleware.InvokeAsync(HttpContext context) in /src/Project.Api/Middleware/ExceptionMiddleware.cs:line 29
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
version: '3'
services:
#mssql docker
  project-sql:
    image: mcr.microsoft.com/mssql/server:2017-latest-ubuntu
    restart: unless-stopped
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=QWElkj132!
      - MSSQL_PID=Developer
    ports:
      - 1401:1433
    networks:
      - projectnet

  project-api:
    restart: unless-stopped
    build:
      context: .
    environment:
      - ConnectionStrings:FitBody=Server=project-sql,1433;Database=FitBody;User=sa;Password=QWElkj132!;ConnectRetryCount=0
    ports:
      - 58744:80
    networks:
      - projectnet
    links:
      - project-sql
    depends_on:
      - project-sql
      
networks:
  projectnet:
    driver: bridge