我有一个WCF WebApi Rest服务,它具有以下端点:
[WebGet(UriTemplate = "{id}")]
和
[WebGet(UriTemplate = "{id}.pdf")]
第一个端点返回JSON,第二个端点返回pdf。这两个端点都在我的本地环境中工作,但pdf端点在运行IIS7的服务器上返回404
。
是否需要某种安装IIS7才能使路由执行?
答案 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>