• 引用 AspNetCoreRateLimit => StatusCode cannot be set because the response has already started.


    app.UseIpRateLimiting(); #需要放在前面,否则抓去不准,还有可能会出现下列错误

    本次出现这个错误,是因为  .Net Core 跨域

    里面的这行:httpContext.Response.StatusCode = 204; 由于StatusCode 先给它设了 204,所以导致 IpRateLimit 报了下图的错误。
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseIpRateLimiting(); #需要放在前面
    
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            app.UseStatusCodePagesWithReExecute("/Home/Error");
        }
        
        //..............
    }
    
    app.UseIpRateLimiting(); #需要放在前面,否则抓去不准,还有可能会出现下列错误
    fail: Microsoft.AspNetCore.Server.Kestrel[13]
          Connection id "0HM084E4TPLBN", Request id "0HM084E4TPLBN:00000001": An unhandled exception was thrown by the application.
    System.InvalidOperationException: StatusCode cannot be set because the response has already started.
       at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ThrowResponseAlreadyStartedException(String value)
       at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.set_StatusCode(Int32 value)
       at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.set_StatusCode(Int32 value)
       at Microsoft.AspNetCore.Http.DefaultHttpResponse.set_StatusCode(Int32 value)
       at Microsoft.AspNetCore.Routing.Matching.HttpMethodMatcherPolicy.<>c__DisplayClass15_0.<CreateRejectionEndpoint>b__0(HttpContext context)
       at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext)
    --- End of stack trace from previous location where exception was thrown ---
       at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
       at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
       at AspNetCoreRateLimit.RateLimitMiddleware`1.Invoke(HttpContext context)
       at Microsoft.AspNetCore.Diagnostics.StatusCodePagesMiddleware.Invoke(HttpContext context)
       at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
       at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.HandleException(HttpContext context, ExceptionDispatchInfo edi)
       at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
       at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)

  • 相关阅读:
    StrToUnicode C#语言如何将汉字转换成Unicode字符
    SQLServer 2008数据库查看死锁、堵塞的SQL语句
    String.IsNullOrEmpty和"".length>0 那个更高效
    使用策略设计模式,反射,解决商城系统中的商品折扣问题
    假分页
    MAC校验
    eclipse环境加载svn
    将数据导出Excel格式
    svn提交问题
    字符串前拼接字符
  • 原文地址:https://www.cnblogs.com/vipsoft/p/13043147.html
Copyright © 2020-2023  润新知