2016-11-23 5 views
0

У меня есть службы WCF (Service1), который принимал в службе Windows, на Server1, то Service1 другую службу WCF (Service2), который размещен в другой службе Windows, на Server2, когда Я называю методы Service1 из WCF test client, я получаю следующее сообщение об ошибке:Вызов службы WCF из другой ошибки вызывают WCF службы

The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host, or an underlying network resource issue. Local socket timeout was '00:14:59.9850000'.

Server stack trace: at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter) at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at IService1.GetHeatInstructionByOrderItemId(Int32 orderItemId) at Service1Client.GetHeatInstructionByOrderItemId(Int32 orderItemId)

, но если положить Service2 на Server1 (2 услуг в Server1) метод бежать без ошибок. Конфигурация

Service2:

<?xml version="1.0"?> 
<configuration> 
<system.web> 
    <compilation debug="true"/> 
</system.web> 
<system.serviceModel> 
<bindings> 
    <netTcpBinding> 
    <binding name="NetTcpBindingEndpointConfig"> 
     <security mode="Transport" /> 
    </binding> 
    <binding name="NetTcpBindingEndpoint" closeTimeout="00:01:00" 
     openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
     transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" 
     hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288" 
     maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536"> 
     <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
     maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     <reliableSession ordered="true" inactivityTimeout="00:10:00" 
     enabled="false" /> 
     <security mode="Transport"> 
     <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" /> 
     <message clientCredentialType="Windows" /> 
     </security> 
    </binding> 
    </netTcpBinding> 
</bindings> 
<services> 
    <service name="MeltshopServiceLibrary.Service2"> 
    <endpoint address="" binding="netTcpBinding" 
    bindingConfiguration="NetTcpBindingEndpointConfig" 
     name="NetTcpBindingEndpoint" contract="MeltshopServiceLibrary.IService2" /> 
    <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" 
     name="mexTcpBidingEndpoint" 
     contract="IMetadataExchange" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="net.tcp://Server2:1531/Service2" /> 
     </baseAddresses> 
    </host> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name=""> 
     <serviceMetadata httpGetEnabled="false" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
</system.serviceModel> 
<connectionStrings> 
<add name="MeltshopConnection" providerName="System.Data.OracleClient" connectionString="Data Source=******;Persist Security Info=True;User ID=*****;password =****** "/> 
<add name="KosarConnection" providerName="System.Data.OracleClient" connectionString="Data Source=*****;Persist Security Info=True;User ID=******;password =*******"/> 
</connectionStrings> 
</configuration> 

и это Service1 конфигурация:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
<configSections> 
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
</configSections> 
<system.web> 
<compilation debug="true" /> 
</system.web> 
<system.serviceModel> 
<client> 
    <endpoint address="net.tcp://Server2:1531/Service2" binding="netTcpBinding" 
    bindingConfiguration="NetTcpBindingEndpointConfig" contract="MyServiceReference2.IService2" 
    name="NetTcpBindingEndpoint3" > 
     <identity> 
     <dns value="Server2" /> 
    </identity> 
    </endpoint> 
</client> 

<bindings> 
    <netTcpBinding> 
    <binding name="NetTcpBindingEndpointConfig" closeTimeout="00:15:00" openTimeout="00:15:00" sendTimeout="00:15:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> 
     <security mode="Transport" /> 
    </binding> 
    </netTcpBinding> 
</bindings> 
<services> 
    <service name="Level4Service.Service1"> 
    <endpoint address="" binding="netTcpBinding" bindingConfiguration="NetTcpBindingEndpointConfig" name="NetTcpBindingEndpoint" contract="Level4Service.IOrderService" /> 
    <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" name="mexTcpBidingEndpoint" contract="IMetadataExchange" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="net.tcp://Server1:1531/Design_Time_Addresses/Level4Service/Service1/" /> 
     </baseAddresses> 
    </host> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name=""> 
     <serviceMetadata httpGetEnabled="false" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
</system.serviceModel> 
<connectionStrings> 
<add name="ERPContext" providerName="System.Data.SqlClient" connectionString="Data Source=Sqls1;Initial Catalog=ERP;User ID=sa_sysdev;Password=****" /> 
</connectionStrings> 
<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> 
</startup> 
<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="AutoMapper" publicKeyToken="be96cd2c38ef1005" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-3.2.1.0" newVersion="3.2.1.0" /> 
    </dependentAssembly> 
</assemblyBinding> 
</runtime> 
<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    <providers> 
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
</providers> 
</entityFramework> 
</configuration> 

Где проблема?

ответ

0

Я enabled tracing на Service2, и я нашел следующее сообщение об ошибке при вызове Service2 из Service1.

The service does not allow you to log on anonymously.

поэтому использование this thread Я нашел решение.

учетная запись для моих окон Service1 была установлена ​​в LocalSystem, поэтому я сменил ее на NetworkService и переустановил сервис и устранил проблему.

Смежные вопросы