2010-10-15 3 views
1

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

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

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

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

Вот ServiceModel элемент из 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> 
+0

Можете ли вы опубликовать конфигурацию wcf на стороне сервера? – softveda

+0

Это довольно просто: я думаю, что это все, что вам нужно, сообщите мне, если вы видите какие-либо несоответствия, мне пришлось удалить некоторые имена. –

+0

Обратите внимание, что вы отметили свой вопрос «wfc» вместо «wcf» (-:. Только для следующего раза .. –

ответ

0

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

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

1

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

+0

Благодарим вас за эту информацию, это, безусловно, окажется полезным в будущем. –