2012-02-10 3 views
1

Я взял проект, сделанный в asp.net C#, с использованием файла svc, который был более или менее полным. У меня есть третья сторона, пытающаяся подключиться к этой службе. и они получают сообщение об ошибке при попытке выполнить действие DownloadOrdersУ меня есть служебная ошибка WCF с .... Найденный тип узла «Элемент» с именем «tns: downloadOrders

Извините, если это что-то глупо, но я понятия не имею, о SOAP веб-сервисы

OperationFormatter обнаружил недопустимое тело сообщения. Ожидается найти тип узла «Элемент» с именем «DownloadOrders» и пространство имен «http://schema.example.com». Найдено тип узла «Элемент» с именем «ТНС: downloadOrders» и пространство имен «http://schema.example.com»

У меня есть код

namespace WebShopServiceLibrary 
{ 
using System; 
using System.Collections.Generic; 
using System.ServiceModel; 

[ServiceContract(Namespace = "http://schema.example.com", Name = "DownloadOrders")] 
public interface IWebShopService 
{ 
    [OperationContract] 
    bool CompleteOrder(string cartId); 
    [OperationContract(Action = "http://mywebsite.com/WebShopService?class=WebShopService&method=downloadOrders", 
     Name = "DownloadOrders", ReplyAction = "http://schema.example.com")] 

    IList<WSOrder> DownloadOrders(); 
    [OperationContract] 
    string SayHello(); 
    } 
} 

Я попробовал несколько вещей, угадав и найти все, что мог, в Интернете, но мне не повезло.

Любая помощь будет значительно appriciated

EDITED Спасибо вот запрос от третьей стороны

POST http://www.mywebsite.co.uk/WebShop/WebShopService.svc HTTP/1.1 
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol  2.0.50727.5420) 
VsDebuggerCausalityData: uIDPo6vC8nDAd61IqHUONkdct2QAAAAAPjFJqj7Kp0ucNDHglgII9Lf1sYSLziBNtVp3NnVPAecACQAA 
Content-Type: text/xml; charset=utf-8 
SOAPAction: "http://thridpartywebsite.com/WebShopService?class=WebShopService&method=downloadOrders" 
Host: www.mywebsite.co.uk 
Content-Length: 480 
Expect: 100-continue 
Connection: Keep-Alive 

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://schema.example.com" xmlns:types="http://schema.example.com/encodedTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:downloadOrders /></soap:Body></soap:Envelope> 
+0

ссылка http://stackoverflow.com/questions/492407/operationformatter-encountered-an-invalid-message-body ответ: состояние ответа BodyStyle в контракте операции установлено на WrappedResponse. Измените BodyStyle на WebMessageBodyStyle.Bare. – Devjosh

+0

@Devjosh, этот вопрос не имеет отношения к этому: этот вопрос касается конечной точки SOAP, в то время как BodyStyle (в WebGet/WebInvoke) относится к не-SOAP. – carlosfigueira

+0

@ user1201810, можете ли вы разместить фактический запрос, который делается на эту услугу (т. Е. Тот, который был отправлен третьим лицом)? Не стесняйтесь лишать любую идентифицируемую информацию для клиента. – carlosfigueira

ответ

4

Существует несоответствие в названии:

DownloadOrders 

и

tns:downloadOrders 

Обратите внимание на разницу в капитализации. Вы должны убедиться, что сервер и клиент совпадают.

+0

Спасибо, я знал, что это должно быть что-то простое, я продолжал пытаться соответствовать части tns:. вы, сэр, сделали мой день! Спасибо! – user1201810

+0

Капитализация пространства имен была проблемой и была решена – Reza