2009-05-23 86 views
1

我需要在单击按钮时呈现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) 

请与此异常提示。

+0

上面的代码是从MVC应用程序 – Prasad 2009-05-23 07:45:47

回答

6

通过在控制器中返回空结果来解决此错误

return new EmptyResult();

0

作为一个建议,当我有这个问题,这是因为我有我的代码块之前有空白/新行/ html代码。在打电话给你的功能之前,检查你是否没有给客户端发送什么信息。

+1

我没有任何代码之间的空间。 下面是我用来渲染的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

+0

我不得不承认我没有使用C#进行Web开发。 出于兴趣,如果将Response.ContentType移动到Response.AddHeader(“Accept-Header”,PDFBytes.Length.ToString())的第一行之上,还会出现此问题吗? – 2009-05-23 08:15:29

0

任何东西,我的意思是什么发送到客户端之前,你打算设置的标题可能会导致此错误。在某些情况下,在某些情况下,您的应用会在您需要的标题前向客户端发送一些内容。

相关问题