Ajax-вызов службы WCF возвращает 12031 ERROR_INTERNET_CONNECTION_RESET в новой конечной точке - PullRequest
0 голосов
/ 08 апреля 2010

Я расширил службу WCF новыми функциями в виде второго контракта на обслуживание. Service.cs теперь реализует оба контракта. Я добавил еще одну конечную точку для раскрытия новых контрактных операций. Вот мой web.config, относящийся к услуге

<system.serviceModel>
    <bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding" />
  </basicHttpBinding>
        <webHttpBinding>
            <binding name="XmlHttpBinding"/>
        </webHttpBinding>
    </bindings>
    <services>
        <service name="MyNamespace.MyService" 
           behaviorConfiguration="MyServiceBehavior">
            <!-- Service Endpoints -->
            <endpoint address="xmlHttp1" 
              behaviorConfiguration="XmlHttpBehavior" 
              binding="webHttpBinding" 
              bindingConfiguration="XmlHttpBinding" 
              contract="MyNamespace.IContract1" />
    <endpoint address="xmlHttp2"
              binding="webHttpBinding"
              behaviorConfiguration="XmlHttpBehavior"
              bindingConfiguration="XmlHttpBinding"
              contract="MyNamespace.IContract2" />
    <endpoint address=""
              binding="basicHttpBinding"
              bindingConfiguration="BasicHttpBinding"
              contract="MyNamespace.IContract1" />
        </service>
    </services>
    <behaviors>
        <serviceBehaviors>
            <behavior name="MyServiceBehavior">
                <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
                <serviceMetadata httpGetEnabled="true"/>
                <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
                <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
        </serviceBehaviors>
        <endpointBehaviors>
            <behavior name="XmlHttpBehavior">
                <webHttp/>
            </behavior>
        </endpointBehaviors>
    </behaviors>
</system.serviceModel>

Из Javascript вызов 'http://server/wcfServiceApp/MyService.svc/xmlHttp1/Method1' по-прежнему работает нормально.

Вызов 'http://server/wcfServiceApp/MyService.svc/xmlHttp2/Method2' возвращает ошибку 12031.

Должно быть что-то простое, что я не делаю, любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 08 апреля 2010

Я решил проблему. В бизнес-объекте (назовем его BusinessClass), который я возвращал, был указан атрибут [DataContract ()], что нормально.

Однако этот класс содержал пользовательскую коллекцию (назовем ее CustomCollectionClass), для которой также был указан атрибут [DataContract ()].

Первоначально я просто собирался вернуть объект CustomCollectionClass, но затем решил сделать коллекцию членом BusinessClass - в случае если я решил вернуть несколько коллекций позже. Я забыл удалить атрибут [DataContract ()] из CustomCollectionClass. Как только я удалил этот атрибут - все было просто замечательно.

Я новичок в WCF, так может ли один из вас, эксперты WCF, проконсультироваться по этому посту и объяснить, что происходило под прикрытием, если этот атрибут был указан дважды? Я хотел бы понять это для дальнейшего использования. Спасибо.

0 голосов
/ 08 апреля 2010

Я видел 12031, прежде чем связался с ошибками Viewstate (слишком много VS). Как вы называете эту услугу? Вы провели простую трассировку HTTP с помощью такого инструмента, как Fiddler, чтобы проверить, что вы отправляете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...