我有一个看起来像这样的资源:
/users/{id}/summary?format={format}
Run Code Online (Sandbox Code Playgroud)
什么时候format是"xml"或"json"我用一个由WCF自动编码的用户摘要对象进行响应 - 到目前为止很好.但是当format等于"pdf"时,我希望我的回复包括一个简单的HTTP响应主体和一个PDF文件附件.
这是怎么做到的?黑客攻击WebOperationContext.Current.OutgoingResponse似乎不起作用,即使这样做也不会是正确的.在CDATA部分中包含文件的位或响应中的某些内容是不安全的.我应该创建一个子类Message,然后提供一个IDispatchMessageFormatter响应它的自定义?我走了一小段路,但最终发现文件不透明.
什么是对的?
事实证明,我需要的是WCF"原始"方式,如所描述这里.从广义上讲,我想这样做:
[OperationContract, WebGet(UriTemplate = "/users/{id}/summary?format={format}"]
public Stream GetUserSummary(string id, string format)
{
if(format == "pdf")
{
WebOperationContext.Current.OutgoingResponse.ContentType = "application/pdf";
return new MemoryStream(CreatePdfSummaryFileForUser(id));
}
else
{
// XML or JSON serialization. I can't figure out a way to not do this explicitly, but my use case involved custom formatters anyway so I don't care.
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3392 次 |
| 最近记录: |