2010-11-08 2 views
1

У меня есть веб-сервис .NET 4.0, который имеет целевое пространство имен «http://tempuri.org» при создании WSDL. Клиент отправляет мне SOAP-конверт с xmlns, установленным на «uri: company: agent» (см. Пример ниже). Моя служба отклоняет конверт SOAP, поскольку пространства имен не совпадают.WSDL Xmlns change

<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: компания: агент "вместо" http://tempuri.org/ ". Я смотрел экстенсивно, но любые изменения, которые я делаю, не отражают в WSDL.

ответ

1

Если вы lookt в вашем .asmx файле кода он должен начать что-то вроде этого:

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

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

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

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

.. Я думаю, что я, возможно, неправильно набранный выше .... у меня есть. Файл svc не является файлом asmx. Будет ли это иметь значение? –

+0

Обновлен мой ответ, 2-я часть должна работать для вас. – brendan

+0

спасибо! это что-то, что я должен добавить к каждому методу? Я добавил поведение службы, но теперь все публичные методы теперь более заметны в WSDL? –

Смежные вопросы