Услуги isOneWay WCF - PullRequest
       3

Услуги isOneWay WCF

1 голос
/ 16 октября 2010

Я пытаюсь создать процесс, который проверяет данные в базе данных и уведомляет пользователей об ошибках.Сначала я думал о создании веб-службы, которая запускается, когда пользователь сохраняет веб-форму.Этот веб-сервис начнет процесс проверки данных и заполнения другой таблицы информацией о том, какая информация, по ее мнению, является недействительной.С самого начала я намеревался вернуть этот веб-сервис мгновенно до фактического завершения проверки данных.Проверка данных будет более длительным процессом и не предназначена для проверки формы.Также нормально, если произойдет сбой, поскольку процесс будет обновляться каждый вечер, поэтому я не беспокоюсь об этом.

Сервисы OneWay кажутся наиболее логичным выбором для этого.Я уже написал сервис, и все работает отлично без присутствия OneWay.Однако, как только я добавляю OneWay, процесс больше не работает.Что меня особенно озадачивает, так это то, что у меня есть строка, которая выводит файл журнала в самом начале метода веб-службы и иногда записывает журнал при вызове службы.Не каждый раз, но иногда.У меня также есть несколько операторов журнала, которые выводятся, и он никогда не выходил за первую строку после включения isOneWay.Кажется, что код просто произвольно останавливается.Кто-нибудь когда-нибудь сталкивался с этим раньше?Мой следующий вариант - создать задачу сетевой очереди, которая получает вызов веб-службы напрямую и добавляет его в свою очередь, и я надеялся избежать этого.

Немного дополнительной справочной информации, я новичок в службах WCFно не веб-сервисы в целом.Веб-приложение написано на ASP.Net и вызывает веб-сервис через HttpGet.

Я открыт для других предложений по архитектуре, и любые замечания приветствуются.

Вот элемент ServiceModel изthe web.config:

        <system.serviceModel>
      <bindings>
        <customBinding>
          <binding name="WebHttpBinding_Service">
            <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
                messageVersion="Soap12" writeEncoding="utf-8">
              <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                  maxBytesPerRead="4096" maxNameTableCharCount="16384" />
            </textMessageEncoding>
            <httpTransport authenticationScheme="Negotiate,Ntlm"/>
          </binding>
        </customBinding>
        <webHttpBinding>
          <binding name="webHttpBinding_IISAuthen">
            <security mode="TransportCredentialOnly">
              <transport clientCredentialType="Windows" />
            </security>
          </binding>
        </webHttpBinding>
      </bindings>
      <services>
        <service name="Namespace.Service" behaviorConfiguration="Namepsace.ServiceBehavior">
          <endpoint address="" behaviorConfiguration="Namespace.ServiceAspNetAjaxBehavior"
           binding="webHttpBinding" bindingConfiguration="webHttpBinding_IISAuthen" contract="Namespace.Service" />
        </service>
      </services>
      <behaviors>
        <endpointBehaviors>
          <behavior name="Namespace.ServiceAspNetAjaxBehavior">
            <enableWebScript />
          </behavior>
        </endpointBehaviors>
        <serviceBehaviors>
          <behavior name="Namespace.ServiceBehavior">
            <!-- 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>
      </behaviors>
      <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
      <client>
        <endpoint binding="customBinding" bindingConfiguration="WebHttpBinding_Service"
            contract="Service" name="WebHttpBinding_Service"  />
      </client>
    </system.serviceModel>

Ответы [ 2 ]

1 голос
/ 16 октября 2010

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

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

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

Я благодарю всех за уделенное время, трассировка, безусловно, окажется полезной в будущем.

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