服务器在发送HTTP标头后无法设置内容类型
我需要在单击按钮时呈现PDF。服务器在发送HTTP标头后无法设置内容类型
我用下面的JS代码:
function RenderPDf() {
//for
window.open("/Resources/RenderPDF", "", 'toolbar=no,titlebar=no, directories=no, location=no,status=yes, menubar=no, resizable=yes, scrollbars=yes,width=1010, height=680,left=0,top=0');
return false;
}
但我有时会收到以下错误:
Message :Server cannot set content type after HTTP headers have been sent.
Source :System.Web
Stack Trace : at System.Web.HttpResponse.set_ContentType(String value)
at System.Web.UI.Page.SetIntrinsics(HttpContext context, Boolean allowAsync)
at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at ASP.views_file_viewtaxreturn_aspx.ProcessRequest(HttpContext context)
at System.Web.Mvc.ViewPage.RenderView(ViewContext viewContext)
at System.Web.Mvc.WebFormView.RenderViewPage(ViewContext context, ViewPage page)
at System.Web.Mvc.WebFormView.Render(ViewContext viewContext, TextWriter writer)
at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass11.<InvokeActionResultWithFilters>b__e()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass11.<>c__DisplayClass13.<InvokeActionResultWithFilters>b__10()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
at System.Web.Mvc.Controller.ExecuteCore()
at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext)
at System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext)
at System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext)
at System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
TargetSite :Void set_ContentType(System.String)
请与此异常提示。
通过在控制器中返回空结果来解决此错误
return new EmptyResult();
作为一个建议,当我有这个问题,这是因为我有我的代码块之前有空白/新行/ html代码。在打电话给你的功能之前,检查你是否没有给客户端发送什么信息。
我没有任何代码之间的空间。 下面是我用来渲染的MVC C#代码: Response.Clear(); Response.AddHeader(“Accept-Header”,PDFBytes.Length.ToString()); Response.ContentType =“application/pdf”; Response.AddHeader(“Content-Disposition”,“inline; filename = SamplePDF.pdf”); Response.AddHeader(“content-length”,PDFBytes.Length.ToString()); Response.BinaryWrite(PDFBytes); Response.Flush(); – Prasad 2009-05-23 07:52:08
我不得不承认我没有使用C#进行Web开发。 出于兴趣,如果将Response.ContentType移动到Response.AddHeader(“Accept-Header”,PDFBytes.Length.ToString())的第一行之上,还会出现此问题吗? – 2009-05-23 08:15:29
任何东西,我的意思是什么发送到客户端之前,你打算设置的标题可能会导致此错误。在某些情况下,在某些情况下,您的应用会在您需要的标题前向客户端发送一些内容。
上面的代码是从MVC应用程序 – Prasad 2009-05-23 07:45:47