特定格式的 C# Web 方法
C# Web Method In Specific Format
在 C# Web 应用程序的 ASMX 文件中创建 Web 方法时,关联的 WSDL 格式如下:
<Envelope>
<Header/>
<Body>
<WebMethodName>
<WebMethodArgumentName>
<WebMethodArgumentType>
我需要这样:
<Envelope>
<Header/>
<Body>
<WebMethodName>
<WebMethodArgumentType>
或者像这样:
<Envelope>
<Header/>
<Body>
<WebMethodArgumentName>
<WebMethodArgumentType>
这是因为客户端发送的是那种格式的请求,所以我需要控制外层标签的名字,我能想到的办法只有改web方法的名字或者web方法参数,但为了做到这一点,我只需要这些标签之一。
顺便说一句,我用 svcutil.exe 生成代码(wsdl.exe 产生相同的结果),如下所示:
svcutil /language:C# /out:IWebServiceName.cs /n:*,Web.Service.Namespace ^
..\XSD\SomeXsd.xsd ^
..\XSD\AnotherXsd.xsd ^
..\WSDL\TheWsdl.wsdl
我怎样才能做到这一点?
谢谢!
问这个问题已经有一段时间了,但终于得到了答案:用这样的注释装饰 web 方法:
[SoapDocumentMethod(ParameterStyle = SoapParameterStyle.Bare)]
根据docs,枚举有3个成员:
Bare, Default, Wrapped
Wrapped是默认的,对参数进行封装。
我正在寻找 Bare,它将参数直接放在 SOAP 请求或 SOAP 响应的 Body 元素之后。
希望它能帮助像我一样处理这个问题的人。
在 C# Web 应用程序的 ASMX 文件中创建 Web 方法时,关联的 WSDL 格式如下:
<Envelope>
<Header/>
<Body>
<WebMethodName>
<WebMethodArgumentName>
<WebMethodArgumentType>
我需要这样:
<Envelope>
<Header/>
<Body>
<WebMethodName>
<WebMethodArgumentType>
或者像这样:
<Envelope>
<Header/>
<Body>
<WebMethodArgumentName>
<WebMethodArgumentType>
这是因为客户端发送的是那种格式的请求,所以我需要控制外层标签的名字,我能想到的办法只有改web方法的名字或者web方法参数,但为了做到这一点,我只需要这些标签之一。
顺便说一句,我用 svcutil.exe 生成代码(wsdl.exe 产生相同的结果),如下所示:
svcutil /language:C# /out:IWebServiceName.cs /n:*,Web.Service.Namespace ^
..\XSD\SomeXsd.xsd ^
..\XSD\AnotherXsd.xsd ^
..\WSDL\TheWsdl.wsdl
我怎样才能做到这一点?
谢谢!
问这个问题已经有一段时间了,但终于得到了答案:用这样的注释装饰 web 方法:
[SoapDocumentMethod(ParameterStyle = SoapParameterStyle.Bare)]
根据docs,枚举有3个成员:
Bare, Default, Wrapped
Wrapped是默认的,对参数进行封装。
我正在寻找 Bare,它将参数直接放在 SOAP 请求或 SOAP 响应的 Body 元素之后。
希望它能帮助像我一样处理这个问题的人。