Рабочий процесс 4 под ошибкой AppFabric в AppDashboard при использовании каналов - PullRequest
0 голосов
/ 14 января 2011

У меня успешно работает несколько рабочих процессов с Server AppFabric.

Однако я заметил, что когда я пытаюсь использовать namePipeBinding для связи с рабочим процессом, вызов успешно выполняется для клиента (вызов помечается как IsOneWay = true в определении интерфейса для службы), но в AppFabric Панель инструментов: я вижу, что сообщение успешно обрабатывается, а затем мы получаем вызов, который отображается как «Исключение службы» со следующим исключением

System.ServiceModel.CommunicationException: There was an error reading from the pipe: The pipe has been ended. (109, 0x6d). ---> System.IO.IOException: The write operation failed, see inner exception. ---> System.ServiceModel.CommunicationException: There was an error reading from the pipe: The pipe has been ended. (109, 0x6d). ---> System.IO.PipeException: There was an error reading from the pipe: The pipe has been ended. (109, 0x6d).
at System.ServiceModel.Channels.PipeConnection.OnAsyncReadComplete(Boolean haveResult, Int32 error, Int32 numBytes)
--- End of inner exception stack trace ---
at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.ConnectionStream.ReadAsyncResult.End(IAsyncResult result)
at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult)
--- End of inner exception stack trace ---
at System.Net.Security.NegotiateStream.EndRead(IAsyncResult asyncResult)
at System.ServiceModel.Channels.StreamConnection.EndRead()
--- End of inner exception stack trace ---
at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.FramingDuplexSessionChannel.TryReceiveAsyncResult.End(IAsyncResult result, Message& message)
at System.ServiceModel.Dispatcher.DuplexChannelBinder.EndTryReceive(IAsyncResult result, RequestContext& requestContext)
at System.ServiceModel.Dispatcher.ErrorHandlingReceiver.EndTryReceive(IAsyncResult result, RequestContext& requestContext)

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

Все отлично работает, когда я использую http-привязки.

Почему об этой ошибке сообщается на приборной панели?

Подробности конфигурации для клиентского приложения показаны ниже

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_ISLG" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="UserName" algorithmSuite="Default" />
                </security>
            </binding>
        </basicHttpBinding>
        <netNamedPipeBinding>
            <binding name="NetNamedPipeBinding_ISLG" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
                hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
                maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />

                <security mode="Transport">
                  <transport protectionLevel="EncryptAndSign"/>
                </security>
            </binding>
        </netNamedPipeBinding>
    </bindings>
    <client>
        <endpoint address="net.pipe://vm-vsnet2010/TestWorkflowDeclarativeServiceLibrary/Service3.xamlx"
            binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_ISLG"
            contract="SLGService.ISLG" name="NetNamedPipeBinding_ISLG">
            <identity>
                <servicePrincipalName value="host/VM-VSNET2010" />
            </identity>
        </endpoint>
    </client>
</system.serviceModel>

1 Ответ

0 голосов
/ 30 марта 2011

Можете ли вы отправить конфигурацию привязки сервера? Они могут отличаться, и поэтому сервер не может получать данные из канала.

Привет

...