首页 / C# / c# – 控制WCF响应格式和名称空间
c# – 控制WCF响应格式和名称空间
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 控制WCF响应格式和名称空间,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2481字,纯文字阅读大概需要4分钟。
内容图文
![c# – 控制WCF响应格式和名称空间](/upload/InfoBanner/zyjiaocheng/816/01058a2e6d3f431595adda95982604cb.jpg)
我希望我的WCF响应有一个带有两个名称空间的响应元素使用DataContracts,但我无法让它工作.这就是我想要的回应:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<s:Header />
<s:Body>
<ns2:TestReply xmlns="http://www.test.org/test/2007/00" xmlns:ns2="http://www.test2.org/test2/types">
<ns2:Result>
<ns2:ActionSuccessful>true</ns2:ActionSuccessful>
</ns2:Result>
<ns2:ResultData>
<ns2:Name>Maikel Willemse</ns2:Name>
</ns2:ResultData>
</ns2:TestReply>
</s:Body>
</s:Envelope>
这是我得到的响应(使用WCF测试客户端进行测试时):
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header />
<s:Body>
<GetDataResponse xmlns="http://www.test.org/test/2007/00">
<TestReply xmlns:a="http://www.test2.org/test2/types" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:Result>
<a:ActionSuccessful>true</a:ActionSuccessful>
</a:Result>
<a:ResultData>
<a:Name>Maikel Willemse</a:Name>
</a:ResultData>
</TestReply>
</GetDataResponse>
</s:Body>
</s:Envelope>
我的服务界面如下所示:
[ServiceContract(Namespace = "http://www.test.org/test/2007/00")]
public interface IService1
{
[OperationContract]
[return: MessageParameter(Name = "TestReply")]
GetDataResponse GetData(string name);
}
服务类:
public class Service1 : IService1
{
public GetDataResponse GetData(string name)
{
return new GetDataResponse
{
Result = new Result {ActionSuccessful = true},
ResultData = new ResultData {Name = name}
};
}
}
DataContract类是:
[DataContract(Namespace = "http://www.test2.org/test2/types")]
public class GetDataResponse
{
[DataMember(Name = "Result")]
public Result Result { get; set; }
[DataMember(Name = "ResultData")]
public ResultData ResultData { get; set; }
}
[DataContract(Namespace = "http://www.test2.org/test2/types")]
public class Result
{
[DataMember(Name = "ActionSuccessful")]
public bool ActionSuccessful { get; set; }
}
[DataContract(Namespace = "http://www.test2.org/test2/types")]
public class ResultData
{
[DataMember(Name = "Name")]
public string Name { get; set; }
}
我的WCF项目的目标框架是.NET 4.名称空间前缀不必相同.如何以我想要的格式获得响应?
解决方法:
致@Maikel
TestReply位于默认命名空间中,因此没有前缀,但里面的元素确实有它.
xmlns:a="http://www.test2.org/test2/types
所以这个命名空间的前缀是一个. (因为’a =’),它与默认命名空间不同.
在方法的ServiceContractAttribute中
GetDataResponse GetData(string name);
正如@Carlos建议的,你可以写
[ServiceContract(Namespace="http://www.test2.org/test2/types")]
你不能拥有这个
<a:TestReply xmnls:a="http://www.test2.org/test2/types">
内容总结
以上是互联网集市为您收集整理的c# – 控制WCF响应格式和名称空间全部内容,希望文章能够帮你解决c# – 控制WCF响应格式和名称空间所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。