给定合同如:
[ServiceContract] public interface IService
{
[OperationContract]
[WebGet(UriTemplate = "GetData/{id}.{format}")]
ResponseData GetData(string id, string format);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让服务在请求时以json响应:/GetData/1234.json,xml当被请求为/GetData/1234.xml时仍然可以作为一个其他网址的正确肥皂服务,强烈键入wsdl合同?
使用Stream作为GetData的返回值是不可行的,就好像它满足前两个要求一样,wcf无法创建完整的wsdl规范,因为它不知道结果Stream的内容是什么.
cas*_*One 12
您应该有两个单独的方法,它们采用id和格式(并且它们将调用返回的共享实现ResponseData)具有不同的WebGet属性:
[ServiceContract]
public interface IService
{
[OperationContract]
[WebGet(UriTemplate = "GetData/{id}.{format}.xml",
ResponseFormat=WebMessageFormat.Xml)]
ResponseData GetDataXml(string id, string format);
[OperationContract]
[WebGet(UriTemplate = "GetData/{id}.{format}.json",
ResponseFormat=WebMessageFormat.Json)]
ResponseData GetDataJson(string id, string format);
}
Run Code Online (Sandbox Code Playgroud)
对于SOAP端点,您应该能够调用任一方法,但是您必须有一个单独的ServiceHost实例来托管合同的实现.
| 归档时间: |
|
| 查看次数: |
5519 次 |
| 最近记录: |