首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在发送HTTP标头上传文件后,服务器无法追加标头

在发送HTTP标头上传文件后,服务器无法追加标头
EN

Stack Overflow用户
提问于 2015-07-08 16:30:08
回答 1查看 3.3K关注 0票数 18

我在我的asp.net MVC5 c# web应用程序中间歇性地遇到此异常:

服务器无法在发送HTTP头之后追加标头。

它只是发生在上传图片到S3方法(Web )。

Global.asax中的presendrequestheaders

代码语言:javascript
复制
protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
        {
            HttpApplication app = sender as HttpApplication;
            if (app != null &&
                app.Context != null)
            {
                app.Context.Response.Headers.Remove("Server");
            }
        }

触发错误的方法:

代码语言:javascript
复制
    [HttpPost]
    [Route("UploadImageJSON")]
    public IHttpActionResult UploadImageJSON(HttpRequestMessage request)
    {
        var httpRequest = HttpContext.Current.Request;

        // Check if files are available
        if (httpRequest.Files.Count != 1) return BadRequest();

        var postedFile = httpRequest.Files[0];

        var contentType = postedFile.ContentType;
        if (!contentType.Contains("image"))
        {
            return StatusCode(HttpStatusCode.NotAcceptable);
        }




        var keyUploadFiles = Constants.UrlS3Amazon +
                             S3.UploadToS3WithStream(postedFile.InputStream, contentType);


        return Json(JsonConvert.SerializeObject(keyUploadFiles));


    }

编辑:更多信息...我的Web应用托管在弹性BeanStalk中,有一个负载均衡器,负载均衡器安装了SSL证书,负载均衡器和EC2实例之间的连接是在端口80上。也许这会对你有所帮助。

Elmah日志:

System.Web.HttpException (0x80004005):服务器无法在发送HTTP头之后追加标头。在System.Web.HttpHeaderCollection.SetHeader(String名称、字符串值、布尔替换)在Microsoft.Owin.Host.SystemWeb.CallHeaders.AspNetResponseHeaders.Set(String关键字,在Microsoft.Owin.Infrastructure.OwinHelpers.AppendHeaderUnmodified(IDictionary2 headers, String key, String[] values) at Microsoft.Owin.ResponseCookieCollection.Append(String key, String value, CookieOptions options) at Microsoft.Owin.Security.Cookies.CookieAuthenticationHandler.<ApplyResponseGrantAsync>d__b.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Owin.Security.Infrastructure.AuthenticationHandler.<ApplyResponseCoreAsync>d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Owin.Security.Infrastructure.AuthenticationHandler.<TeardownAsync>d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware1.d__0.MoveNext() -来自抛出异常的前一位置的堆栈跟踪结束-在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务)在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务)在Microsoft.AspNet.Identity.Owin.IdentityFactoryMiddleware2.<Invoke>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.Identity.Owin.IdentityFactoryMiddleware2.d__0.MoveNext() -来自前一位置的堆栈跟踪结束抛出异常的位置-在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务)在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务)在Microsoft.AspNet.Identity.Owin.IdentityFactoryMiddleware`2.d__0.MoveNext() -从抛出异常的前一位置开始的堆栈跟踪结束-在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务)在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务)在Microsoft.Owin.Mapping.MapMiddleware.d__0.MoveNext() -来自抛出异常的前一位置的堆栈跟踪的结束-在Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.EndFinalWork(IAsyncResult的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() )在System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()的System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值和completedSynchronously)

谢谢!!

EN

回答 1

Stack Overflow用户

发布于 2016-07-11 12:54:33

你有没有试过删除app.Context.Response.Headers.Remove("Server");?我想这就是问题所在。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31287363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档