2012-05-30 49 views
2

是否可以通过.net(WCF)Rest Full Web服务公开二进制文件。如何在.Net Restful Web服务中公开二进制文件?

我想有我的Web服务器,这是作为一个REST资源上的二进制文件,像

.../API/firmware_2_0

到我的Web服务客户端可以“得到”。

这是可能的,我可以做谁。

我熟悉使用Restful Web服务来提供数据库中数据的JSON表示,但不提供二进制文件。

+1

??你为什么需要WCF这个?如果它是一个二进制文件,并且您想要*获取它,为什么不让IIS服务它? – Cheeso

+1

假设文件或流正在修改内存中(即你不能让IIS处理它),你可以使用[streaming](http://msdn.microsoft.com/en-us/library/ms789010。 aspx)以http绑定为起点。 – silijon

+0

是的,我在想。但是我已经为其他所有与客户的互动提供了其他服务,我只是想保持一致性。 –

回答

7

虽然我同意在大多数情况下IIS应该用于提供文件,但在某些情况下,您实际上想通过RESTful WCF服务公开原始二进制文件。

http://blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-web.aspx

[OperationContract] 
[WebGet(UriTemplate = "?url={uri}")] 
public Stream GetBinary(string uri) 
{ 
    var binary = new byte[0]; // some sort of query 
    var mimeType = ""; // some sort of query 
    WebOperationContext.Current.OutgoingResponse.ContentType = mimeType; 
    return new MemoryStream(binary); 
} 

现在认识到,在这样做,你是完全绕过WCF的格式。因此,不会有任何xml/json包装。