具有文件扩展名的WCF Webapi UriTemplate在本地但不在IIS7上工作

时间:2012-04-12 22:00:47

标签: iis-7 wcf-web-api

我有一个WCF WebApi Rest服务,它具有以下端点:

[WebGet(UriTemplate = "{id}")]

[WebGet(UriTemplate = "{id}.pdf")]

第一个端点返回JSON,第二个端点返回pdf。这两个端点都在我的本地环境中工作,但pdf端点在运行IIS7的服务器上返回404

是否需要某种安装IIS7才能使路由执行?

2 个答案:

答案 0 :(得分:0)

您可能需要将.pdf添加到IIS中的MIME TYPE

尝试添加文件扩展名.PDF,其类型为application / octet-stream

http://technet.microsoft.com/en-us/library/cc725608%28v=ws.10%29.aspx

<强>更新

使用itextsharp:

之类的东西直接返回动态生成的PDF
[WebGet(UriTemplate = "GetPDF/{id}")]        
public void GetPDF(int id)
        {
        Invoice i = InvoiceData.GetInvoiceByID(id);
        MyApp.Data.Export.PDF pdf = new MyApp.Data.Export.PDF();
        byte[] data = pdf.generatePDFBytes(id);

        Response.Clear();
        Response.AddHeader("content-disposition", "attachment;filename=\"" + i.InvoiceNumber + ".pdf" + "\"");
        Response.ContentType = "application/pdf";
        Response.BinaryWrite(data.ToArray());
        Response.End();
    }

答案 1 :(得分:0)

我找到了解决这个问题的方法。这是一个简单的web.config补充:

<system.webServer>
  <handlers>
      <add name="PDFHandler-Integrated-4.0" path="*.pdf" verb="GET" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" preCondition="integratedMode" />
  </handlers>
</system.webServer>