Проблема с добавлением сервисной ссылки для wcf - PullRequest
3 голосов
/ 17 сентября 2010
Warning 1 Custom tool warning: Cannot import wsdl:binding
Detail: The given key was not present in the dictionary.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://wrapper.dao.ccarwebservice.ids.com']/wsdl:binding[@name='CCaRWebServiceHttpBinding'] C:\Users\me\Documents\Visual Studio 2008  \Projects\CcarsWcfTest\CcarsWcfTest\Service References\ServiceReference1\Reference.svcmap 1 1 CcarsWcfTest

что я могу сделать, чтобы решить эту проблему?

Я попытался запустить служебную утилиту из командной строки и добавить ссылку на службу в мой проект. Я также вошел в расширенную настройку в диалоговом окне Добавить ссылку на службу и снял флажок «Повторное использование типов во всех ссылочных сборках».

EDIT

Вот часть wsdl, я думаю, это относится к ..

<wsdl:binding name="CCaRWebServiceHttpBinding" type="ns:CCaRWebServicePortType">
    <http:binding verb="POST"/>
    <wsdl:operation name="fnGetccarprogramsummaryarray">
        <http:operation location="CCaRWebService/fnGetccarprogramsummaryarray"/>
        <wsdl:input>
            <mime:content type="text/xml" part="fnGetccarprogramsummaryarray"/>
        </wsdl:input>
        <wsdl:output>
            <mime:content type="text/xml" part="fnGetccarprogramsummaryarray"/>
        </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="fnGetccarprogramsummary">
        <http:operation location="CCaRWebService/fnGetccarprogramsummary"/>
        <wsdl:input>
            <mime:content type="text/xml" part="fnGetccarprogramsummary"/>
        </wsdl:input>
        <wsdl:output>
            <mime:content type="text/xml" part="fnGetccarprogramsummary"/>
        </wsdl:output>
    </wsdl:operation>
</wsdl:binding>



public partial class fnGetccarprogramsummaryarrayRequest
{

    public fnGetccarprogramsummaryarrayRequest()
    {
    }
}

остальные такие же ...

    public partial class fnGetccarprogramsummaryRequest
{

    [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://wrapper.com", Order=0)]
    [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
    public string programAcronym;

    public fnGetccarprogramsummaryRequest()
    {
    }

    public fnGetccarprogramsummaryRequest(string programAcronym)
    {
        this.programAcronym = programAcronym;
    }
}

Ответы [ 2 ]

1 голос
/ 25 сентября 2010

Откуда взялся WSDL? Как это было сгенерировано?

Возможно, отсутствует определение типов ввода и возврата.

  • fnGetccarprogramsummaryarray
  • fnGetccarprogramsummary.

Возможно, он пытается найти определение в массиве типов и не находит его.

EDIT

Я думаю, что я нашел, что у вас есть привязка POST, и инструмент поддерживает только привязку SOAP

http://social.msdn.microsoft.com/Forums/en/wcf/thread/859a2c87-02db-469d-ab65-c558ff091e61

Ключ, который отсутствует, - это привязка SOAP.

0 голосов
/ 01 октября 2010

После поиска ... единственное решение, с которым я столкнулся, - игнорировать эту ошибку.

"Это внутренняя деталь реализации svcutil.

Возможно, ошибка в том, что wsdl содержит привязку POST, а utlity работает только для привязок SOAP. Но если в привязке есть другая привязка SOAPWSDL это работает. "

...