我正在使用 IIS 7.5 和 .NET 4.5 开发 WCF REST Web 服务。
接口文件有这个声明:
[OperationContract(Action = "PutDataFile", IsOneWay = true)]
[WebInvoke(Method = "POST", UriTemplate = "file")]
void PutDataFile(Stream fileContents);
代码是这样的:
public void PutDataFile(Stream fileContents)
当我从客户端执行 Multipart POST 时,流 fileContents 是这样的:
------------------------------b64bd2de2e40
Content-Disposition: form-data; name="UploadTest.txt"; filename="UploadTest.txt"
Content-Type: application/octet-stream
...
------------------------------b64bd2de2e40--
但是,如果在服务器端,我这样做:
String contentType1 = WebOperationContext.Current.IncomingRequest.ContentType;
String contentType2 = WebOperationContext.Current.IncomingRequest.Headers[HttpResponseHeader.ContentType];
WebHeaderCollection headers = WebOperationContext.Current.IncomingRequest.Headers;
所有这些变量都是空的。我查看了使用 WireShark 的流量,并且 HTTP 请求标头在传输中,特别是 Content-Type 标头。为什么这些标头变量为空?提前致谢!