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