WSDL Xmlns发生了变化

时间:2010-11-08 14:42:59

标签: .net web-services wsdl xml-namespaces

我有一个.NET 4.0 Web服务,在生成WSDL时,targetNamespace为“http://tempuri.org”。客户端向我发送一个SOAP信封,其中xmlns设置为“uri:company:agent”(参见下面的示例)我的服务拒绝SOAP信封,因为名称空间不相同。

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:company:agent">
<SOAP-ENV:Body>
   <ns1:send_message xmlns="urn:company:agent">
       <item1>abc</item1>

我收到以下错误:

 <faultstring xml:lang="en-US">Error in deserializing body of request message for operation 'send_message'. OperationFormatter encountered an invalid Message body. Expected to find node type 'Element' with name 'send_message' and namespace 'http://tempuri.org/'. Found node type 'Element' with name 'ns1:send_message' and namespace 'urn:company:agent'</faultstring>

我的问题如下:我找不到在Visual Studio 2010中更改项目命名空间的位置以反映“uri:company:agent”而不是“http:// tempuri .ORG /”。我看了很多,但我做的任何更改都没有反映在WSDL中。

1 个答案:

答案 0 :(得分:1)

如果您查看.asmx代码文件,它应该是这样的:

[WebService(Namespace = "http://tempuri.org")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class YourServiceName: WebService
{

只需更改tempuri.org网址即可。如果你的声明没有在那里声明,你可以声明它,我认为tempuri可能是默认的。

如果您使用的是WCF,则会略有不同。您需要查看.svc文件的顶部,并可能需要添加 ServiceBehavior 声明,如下所示:

[ServiceBehavior(Name = "MyService", Namespace = "http://myservice.com/")]
public class Service1 : IService1
{