Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
C# 在发送HTTP头并上载文件后,服务器无法追加头_C#_Asp.net Mvc - Fatal编程技术网

C# 在发送HTTP头并上载文件后,服务器无法追加头

C# 在发送HTTP头并上载文件后,服务器无法追加头,c#,asp.net-mvc,C#,Asp.net Mvc,我在asp.net mvc 5 c#web应用程序中间歇性地遇到此异常: 发送HTTP标头后,服务器无法追加标头 它只是碰巧将图像上传到S3方法(WebAPI控制器) Global.asax中的PresendRequestHeader protected void Application_PreSendRequestHeaders(object sender, EventArgs e) { HttpApplication app = sender as H

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

发送HTTP标头后,服务器无法追加标头

它只是碰巧将图像上传到S3方法(WebAPI控制器)

Global.asax中的PresendRequestHeader

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");
            }
        }
触发错误的方法:

    [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应用托管在带有负载平衡器的Elastic BeanStalk中,负载平衡器安装了SSL证书,负载平衡器与EC2实例之间的连接位于端口80中。也许会有帮助

艾玛日志:

System.Web.HttpException(0x80004005):发送HTTP标头后,服务器无法追加标头。 位于System.Web.HttpHeaderCollection.SetHeader(字符串名称、字符串值、布尔替换) 位于Microsoft.Owin.Host.SystemWeb.CallHeaders.AspNetResponseHeaders.Set(字符串键,字符串[]值) 在Microsoft.Owin.Infrastructure.OwinHelpers.AppendHeaderUnmodified(IDictionary
2标题,字符串键,字符串[]值)
在Microsoft.Owin.ResponseCookieCollection.Append(字符串键、字符串值、CookieOptions)
在Microsoft.Owin.Security.Cookies.CookieAuthenticationHandler.d_ub.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Owin.Security.Infrastructure.AuthenticationHandler.d_u8.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Owin.Security.Infrastructure.AuthenticationHandler.d_u5.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware上
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.AspNet.Identity.Owin.IdentityFactoryMiddleware
2.d_u0.MoveNext()上
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.AspNet.Identity.Owin.IdentityFactoryMiddleware上
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
位于Microsoft.AspNet.Identity.Owin.IdentityFactoryMiddleware`2.d_u0.MoveNext()
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Owin.Mapping.MapMiddleware.d_u0.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
位于Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.EndFinalWork(IAsyncResult ar)
在System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()中
在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)


谢谢

您是否尝试过删除app.Context.Response.Headers.Remove(“服务器”);我认为这就是问题所在?

每次使用您的方法上传图像时,它都会出现?因为您在开始时说这是一个间歇性问题…您有响应通过的http模块吗?堆栈跟踪显示代码通过
Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware
Microsoft.Owin.Security.Cookies.Cookie AuthenticationHandler
。您的身份验证流是如何设置的?好问题。我看到了一个类似的间歇性错误,AFAICT与我的任何代码都没有关系,但它的堆栈中充满了
Microsoft.Owin.Security
Microsoft.AspNet.Identity.Owin
方法调用。在我的例子中,“流是如何设置的?”是“它是如何从AspNet.Identity框中出来的”。似乎在UploadToS3WithStream方法中发生了异常,因此您需要显示该方法的代码。