【发布时间】:2021-02-16 08:11:44
【问题描述】:
看起来很简单,但我对wsdl:part的元素和名称属性确实感到困惑。这是 C# 中服务代码的一部分:
界面:
[ServiceContract(Namespace = "http://example.org/virtualfoo")]
public interface IRestFooService
{
[OperationContract]
[WebInvoke(UriTemplate = "getFoo", Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
getFooResponseMess getFoo(getFooRequest request);
}
服务:
[ServiceBehavior(Namespace = "http://example.org/virtualfoo")]
public class RestFooService: IRestFooService
{
public getFooResponseMess getFoo(getFooRequest request)
{
// code
}
}
复杂类型:
[System.ServiceModel.MessageContractAttribute(IsWrapped = false)]
public partial class getFooResponseMess
{
[System.ServiceModel.MessageBodyMember(Namespace = "http://example.org/virtualfoo")]
public getFooResponse getFooResponse;
public getFooResponseMess()
{
}
public getFooResponseMess(getFooResponse getFooRes)
{
this.getFooResponse = getFooRes;
}
}
getFooResponse 类是另一种复杂类型(自定义类)
我有一个 WCF,但是当我看到 wsdl 结构时,我想区分或自定义这部分:
我有这个:
...
<wsdl:message name="getFooResponseMess">
<wsdl:part element="tns:getFooResponse" name="getFooResponse"/>
</wsdl:message>
...
但我想要这个:
...
<wsdl:message name="getFooResponseMess">
<wsdl:part element="tns:getFooResponse" name="getFooResult"/>
</wsdl:message>
...
显然,如果我更改复杂类型 (getFooResponseMess) 的类的属性名称,它会同时更改 name 和 element 属性:
[System.ServiceModel.MessageBodyMember(Namespace = "http://example.org/virtualfoo")]
public getFooResponse getFooResponseTest; // Change
Wsdl 输出:
...
<wsdl:message name="getFooResponseMess">
<wsdl:part element="tns:getFooResponseTest" name="getFooResponseTest"/>
</wsdl:message>
...
但是可以有不同的值吗?我该怎么做?我想知道我的错误是什么以及为什么会发生这种情况
我一直在寻找其他问题,但这个问题的解决方案在我的情况下不起作用:Changing wsdl:part name
【问题讨论】: