0

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

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

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

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

为了执行路由,是否需要某种设置 IIS7?

4

2 回答 2

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>
于 2012-05-10T14:42:35.683 回答
0

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

尝试使用 application/octet-stream 类型添加文件扩展名 .PDF

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();
    }
于 2012-04-13T19:54:13.927 回答