Web Services ASMX WebMethod不正确的命名空间导致空参数

eimct9ow  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(172)

我正在与第三方集成,我必须根据他们的标准创建ASMX Web服务,以便他们调用,他们强制我使用他们的硬编码SOAP Action,比如说“http://tempuri.org/SomeWebService/“,现在的问题是,一旦他们调用我的Web服务,我收到的参数为空字符串,在我检查日志后,我发现他们在WebMethod标记中设置了一个不同的命名空间“http://tempuri.org/”,这似乎避免了.NET正确解析参数,下面是我收到的一个示例Envelope:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<SomeWebMethod xmlns="http://tempuri.org/">
<SomeField>abc123</SomeField>
</s:Body>
</s:Envelope>

现在,由于我不能请求第三方开发人员更新他们的代码库,所以我需要找到一个变通办法,让.NET不验证WebMethod的命名空间标记,那么有没有机会完成这个任务?
请注意,我检查了POST请求,所有参数都在XML正文中沿着并带有赋值,但.NET同样无法将它们解析为方法参数。

iyr7buue

iyr7buue1#

已使用SoapDocumentMethod解决:

[SoapDocumentMethod(
Action="http://tempuri.org/SomeWebService/SomeWebMethod",
RequestNamespace="http://tempuri.org/",
RequestElementName="SomeWebMethod")]
[WebMethod] 
public string SomeWebMethod(string SomeField)
{
    // Implementation ...
}

相关问题