Я пытаюсь создать процесс, который проверяет данные в базе данных и уведомляет пользователей об ошибках. Моя первоначальная мысль заключалась в создании веб-службы, которая запускается, когда пользователь сохраняет веб-форму. Эта веб-служба начнет процесс проверки данных и заполнения другой таблицы информацией о том, какая информация, по ее мнению, неверна. С самого начала я хотел, чтобы этот веб-сервис мгновенно возвращался до фактического завершения проверки данных. Проверка данных будет более длительным процессом и не предназначена для проверки формы. Также хорошо, если это произойдет, потому что процесс будет обновляться каждый вечер, поэтому я не беспокоюсь об этом.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>
Можете ли вы опубликовать конфигурацию wcf на стороне сервера? – softveda
Это довольно просто: я думаю, что это все, что вам нужно, сообщите мне, если вы видите какие-либо несоответствия, мне пришлось удалить некоторые имена. –
Обратите внимание, что вы отметили свой вопрос «wfc» вместо «wcf» (-:. Только для следующего раза .. –