Как вернуть большие и сложные объекты из Serice WCF? - PullRequest
0 голосов
/ 24 марта 2009

Мне кажется, у меня возникла проблема с сериализацией или размером при попытке вернуть сложный объект (объект с вложенными объектами с вложенными объектами ..).

Код ошибки, которую я получаю CommunicationException. Есть идеи?

РЕДАКТИРОВАТЬ: Это трассировка стека

A first chance exception of type 'System.ServiceModel.CommunicationException' occurred in mscorlib.dll
System.ServiceModel.CommunicationException: Connessione sottostante chiusa: Chiusura imprevista della connessione.. ---> System.Net.WebException: Connessione sottostante chiusa: Chiusura imprevista della connessione..
   in System.Net.HttpWebRequest.GetResponse()
   in System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
   --- Fine dell'analisi dello stack dell'eccezione interna ---

Server stack trace: 
   in System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)
   in System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
   in System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
   in System.ServiceModel.Channels.ClientReliableChannelBinder`1.RequestClientReliableChannelBinder`1.OnRequest(TRequestChannel channel, Message message, TimeSpan timeout, MaskingMode maskingMode)
   in System.ServiceModel.Channels.ClientReliableChannelBinder`1.Request(Message message, TimeSpan timeout, MaskingMode maskingMode)
   in System.ServiceModel.Channels.ClientReliableChannelBinder`1.Request(Message message, TimeSpan timeout)
   in System.ServiceModel.Security.SecuritySessionClientSettings`1.SecurityRequestSessionChannel.Request(Message message, TimeSpan timeout)
   in System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
   in System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   in System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
   in System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   in System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]: 
   in System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   in System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   in RecuperoPagati.DataCoreReference.IDataCoreService.GetDossierByNumDossier(String Env, String NumDossier)
   in RecuperoPagati.DataCoreReference.DataCoreServiceClient.GetDossierByNumDossier(String Env, String NumDossier) in C:\Documents and Settings\gdipietro\Documenti\Dev\Rifatturazione\RecuperoPagati\RecuperoPagati\RecuperoPagati\Service References\DataCoreReference\Reference.vb:riga 198
   in RecuperoPagati.WebUserControl1.Page_Load(Object sender, EventArgs e) in C:\Documents and Settings\gdipietro\Documenti\Dev\Rifatturazione\RecuperoPagati\RecuperoPagati\RecuperoPagati\WebUserControl1.ascx.vb:riga 8

Ответы [ 2 ]

1 голос
/ 04 апреля 2009

Я согласен с Джоном; это, вероятно, не проблема сложности типа. Чтобы избавиться от настоящего виновника, вы можете попробовать добавить диагностическую регистрацию в конфигурацию вашего сервиса. Функции трассировки и ведения журналов WCF очень мощные и могут помочь вам найти основную причину большинства проблем.

Если вы используете VS2008, вы должны увидеть опцию меню «Редактировать конфигурацию WCF», когда вы щелкнете правой кнопкой мыши по файлу конфигурации вашего хост-проекта. Выберите узел «Диагностика», чтобы включить трассировку и ведение журнала сообщений.

http://msdn.microsoft.com/en-us/library/ms730064.aspx

Вывод этого журнала можно довольно эффективно просмотреть с помощью средства просмотра трассировки служб, которое уже должно быть на вашем компьютере (поставляется с платформой).

http://msdn.microsoft.com/en-us/library/ms732023.aspx

0 голосов
/ 24 марта 2009

Проблема, вероятно, не имеет ничего общего со сложностью типа. Пожалуйста, опубликуйте полное исключение со всеми InnerException. Просто перехватите исключение и опубликуйте ex.ToString ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...