none
Wcf: Невозможно с использованием wsHttpBinding Message Security передать данные, если они передаются на сервер больше 4 минут RRS feed

  • Общие обсуждения

  • Развернул на IIS 7.5 сайт, в котором виртуальным каталогом создал службу использующую wsHttpBinding Message Security. Сам сайт закрыт по ssl, но служба открыта.

    Клиентом является приложение Wndows Forms. Выяснилось, что когда данные на сервер передаются меньше чем за 4 минуты, то все нормально, если чуть больше, то после того как данные передались на сервер, служба выдает исключение. При этом размер данных не важен, важно только время. Если интернет шустрее работает, большой пакет успешно передается. При установке типа security в "None", все благополучно отрабатывает и за время 4 минуты превышающее.

    Текст ошибки:

    <Exception><ExceptionType>System.ServiceModel.EndpointNotFoundException, System.ServiceModel, Version=4.0.0.0, Culture=neutral, 
    PublicKeyToken=b77a5c561934e089</ExceptionType><Message>There was no channel that could accept the message with action 'EmailWorker/IService1/SaveData'.
    </Message><StackTrace>  at System.ServiceModel.Dispatcher.ErrorBehavior.ThrowAndCatch(Exception e, Message message)
    at System.ServiceModel.Channels.DatagramChannelDemuxer`2.ProcessItem(TInnerItem item)
    at System.ServiceModel.Channels.DatagramChannelDemuxer`2.HandleReceiveResult(IAsyncResult result)
    at System.ServiceModel.Channels.DatagramChannelDemuxer`2.OnReceiveComplete(IAsyncResult result)
    at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
    at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
    at System.ServiceModel.Channels.ReplyChannel.HelpReceiveRequestAsyncResult.OnReceiveRequest(IAsyncResult result)
    at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
    at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
    at System.Runtime.InputQueue`1.AsyncQueueReader.Set(Item item)
    at System.Runtime.InputQueue`1.EnqueueAndDispatch(Item item, Boolean canDispatchOnThisThread)
    at System.Runtime.InputQueue`1.EnqueueAndDispatch(T item, Action dequeuedCallback, Boolean canDispatchOnThisThread)
    at System.ServiceModel.Channels.SingletonChannelAcceptor`3.Enqueue(QueueItemType item, Action dequeuedCallback, Boolean canDispatchOnThisThread)
    at System.ServiceModel.Channels.HttpChannelListener.HttpContextReceived(HttpRequestContext context, Action callback)
    at System.ServiceModel.Activation.HostedHttpTransportManager.HttpContextReceived(HostedHttpRequestAsyncResult result)
    at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest()
    at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest()
    at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequest(Object state)
    at System.Runtime.IOThreadScheduler.ScheduledOverlapped.IOCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
    at System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32 error, UInt32 bytesRead, NativeOverlapped* nativeOverlapped)
    at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)
    </StackTrace>
    <ExceptionString>System.ServiceModel.EndpointNotFoundException: 
    There was no channel that could accept the message with action 'EmailWorker/IService1/SaveData'.</ExceptionString></Exception>
    

    И еще

    <Description>The incoming message is not part of an existing security session.</Description>
    

    Конфигурация клиента

    <configuration>
    <system.serviceModel>
    <bindings>
    <wsHttpBinding>
    <binding name="WSHttpBinding_IService1" closeTimeout="00:02:00"
    openTimeout="00:02:00" receiveTimeout="12:20:00" sendTimeout="00:20:00"
    bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
    maxBufferPoolSize="52428800" maxReceivedMessageSize="655360000"
    messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
    allowCookies="false">
    <readerQuotas maxDepth="32" maxStringContentLength="819200" maxArrayLength="163840000"
    maxBytesPerRead="40960" maxNameTableCharCount="16384" />
    <reliableSession ordered="true" inactivityTimeout="12:10:00"
    enabled="false" />
    <security mode="Message">
    <message clientCredentialType="UserName" negotiateServiceCredential="true" />
    </security>
    </binding>
    </wsHttpBinding>
    </bindings>
    <client>
    <endpoint address="http://manor-medical.info/service/Service1.svc/Service1"
    binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService1"
    contract="ServiceReference1.IService1" name="WSHttpBinding_IService1" behaviorConfiguration="Service1Behavior" >
    </endpoint>
    </client>
    <behaviors>
    <endpointBehaviors>
    <behavior name="Service1Behavior">
    <clientCredentials>           
    <serviceCertificate>
    <authentication certificateValidationMode="None" revocationMode="NoCheck"/>
    </serviceCertificate>
    </clientCredentials>
    </behavior>
    </endpointBehaviors>
    </behaviors></system.serviceModel>
    </configuration>
    

    Конфигурация сервера:

    <system.web>
    <compilation debug="true" targetFramework="4.0"></compilation>
    <httpRuntime maxRequestLength="999999999" /> 
    </system.web>
    <system.serviceModel>
    <services>
    <service name="WcfService1.Service1" behaviorConfiguration="Service1Behavior">
    <endpoint address="Service1" contract="WcfService1.IService1" binding="wsHttpBinding" bindingConfiguration="Service1Binding" />
    </service>
    </services>
    <bindings>
    <wsHttpBinding>
    <binding name="Service1Binding" closeTimeout="00:02:00"
    openTimeout="00:02:00" receiveTimeout="12:20:00" sendTimeout="00:20:00"
    bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
    maxBufferPoolSize="52428800" maxReceivedMessageSize="655360000"
    messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
    allowCookies="false">
    <readerQuotas maxDepth="32" maxStringContentLength="819200" maxArrayLength="163840000"
    maxBytesPerRead="40960" maxNameTableCharCount="16384" />
    <reliableSession ordered="true" inactivityTimeout="12:10:00"
    enabled="false" />
    <security mode="Message">
    <message clientCredentialType="UserName" negotiateServiceCredential="true"></message>
    </security>
    </binding>
    </wsHttpBinding>
    </bindings>
    <behaviors>
    <serviceBehaviors>
    <behavior name="Service1Behavior">
    <serviceCredentials>
    <serviceCertificate findValue="CN=localhost" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectDistinguishedName"/>
    <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="WcfService1.MyUserNamePaswordValidator, WcfService1"/>
    </serviceCredentials>
    <dataContractSerializer maxItemsInObjectGraph="65536000" />
    
    <serviceMetadata httpGetEnabled="true" />
    
    <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
    </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    </system.serviceModel>
    
    Как устранить это ограничение?

Все ответы

  • Уважаемый пользователь!

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


    Для связи [mail]
    Модератор