2015-01-02 5 views
0

У меня есть службы WCF, где IGameServices содержит:WCF метания перед отправкой ответа клиенту

[ServiceContract] 
public interface IGameServices 
{ 
    [OperationContract] 
    DtoReturnedMessage<DtoGame> GetGame(Guid gameId); 
} 

AdminServices содержит:

public class AdminService : IGameServices 
{ 
    private readonly BoGame _boGame = new BoGame(); 

    public DtoReturnedMessage<DtoGame> GetGame(Guid gameId) 
    { 
     return _boGame.Get(gameId); 
    } 
} 

У меня есть, что BoGame, который является классом с бизнес-логикой.

Моя конфигурация является:

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
      <binding name="BasicHttpBinding_IGameServices" sendTimeout="00:05:00" /> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://localhost:50380/Services/Implementations/AdminService.svc" 
      binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IGameServices" 
      contract="IGameServices" name="BasicHttpBinding_IGameServices" /> 
    </client> 
</system.serviceModel> 

Когда я отлаживать его шаг за шагом, все бизнес-логика работает должным образом, и бросает исключение ниже, если ответ должен быть отправлен клиенту.

An error occurred while receiving the HTTP response to http://localhost:50380/Services/Implementations/AdminService.svc. This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details. 

Server stack trace: 
    at System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason) 
    at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) 
    at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) 
    at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout) 
    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 IGameServices.GetGame(Guid gameId) 
    at GameServicesClient.GetGame(Guid gameId) 

Inner Exception: 
The underlying connection was closed: An unexpected error occurred on a receive. 
    at System.Net.HttpWebRequest.GetResponse() 
    at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) 

Inner Exception: 
Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. 
    at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) 
    at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size) 
    at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead) 

Inner Exception: 
An existing connection was forcibly closed by the remote host 
    at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) 
    at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) 

Это странно, потому что у меня есть метод, чтобы сохранить некоторые данные в БД, в одних и тех же IGameServices, что экономит нормально и возвращает сообщение об успешном выполнении, как и ожидалось.

Кто-нибудь знает, что это может быть?

+0

Кто? В сообщении об ошибке сообщается, что удаленный клиент не дождался ответа. На вашем конце не обязательно возникает проблема с кодом, проблема с терпением на другом конце. – jtimperley

+0

Вы уже включили трассировку, чтобы иметь более подробные журналы? http://msdn.microsoft.com/en-us/library/ms751526(v=vs.110).aspx – khlr

+0

@khlr, Да. Я решил проблему. На самом деле ошибка была слишком общей. Проблема заключалась в том, что версии сборки postsharp не совпадают. Я узнал, пытаясь открыть службы непосредственно в браузере. Я удалил Postsharp в этом проекте. – Th3B0Y

ответ

0

Я решил проблему. На самом деле ошибка была слишком общей. Проблема заключалась в том, что версии сборки Postsharp не совпадают.

Я нашел это, пытаясь открыть службы непосредственно в браузере. Я удалил Postsharp в этом проекте и BANG.

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