WSDL Xmlns изменить - PullRequest
       21

WSDL Xmlns изменить

1 голос
/ 08 ноября 2010

У меня есть веб-служба .NET 4.0, у которой targetNamespace равно «http://tempuri.org"» при создании WSDL. Клиент отправляет мне конверт 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 Ответ

1 голос
/ 08 ноября 2010

Если вы посмотрите на свой файл кода .asmx, он должен начать примерно так:

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

Просто измените там URL-адрес tempuri.org. Если у вас нет пространства имен, объявленного там, вы можете объявить его, я думаю, что tempuri может быть значением по умолчанию.

Если вы используете WCF, все будет немного иначе. Возможно, вы захотите взглянуть на верхнюю часть вашего файла .svc и, вероятно, должны будете добавить объявление ServiceBehavior , например, так:

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