Сложные типы данных в WCF?

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
21
задан Dan Atkinson 14 July 2011 в 10:44
поделиться

11 ответов

Как примечание, необходимо изучить, как использовать WCF регистрирующиеся утилиты:

Регистрирующаяся информация

Редактор Конфигурации (делает его защелкой для установки).

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

38
ответ дан MichaelGG 29 November 2019 в 06:28
поделиться

Хорошо я наконец нашел настоящую проблему в своем случае. Кажется, что перечисления представления не являются самой большой вещью в мире. Я или должен установить значение по умолчанию на них, или вместо этого представить свойство как интервал или безотносительно целого типа, на основе которого мое перечисление.

спасибо за помощь, у Вас не было способа знать это - я нашел перечисления на 3-м уровне в моей структуре, и systematicly, удаляющий datamembers один за другим, был способом, которым я узнал. Кажется, что я не единственный, кто столкнулся с этой проблемой - у этого парня, очевидно, были подобные проблемы:)

http://zianet.dk/blog/2007/11/24/serializing-enums-in-wcf/

11
ответ дан Per Hornshøj-Schierbeck 29 November 2019 в 06:28
поделиться

это - на самом деле та же информация как Ваше первое описание исключения. было бы интересно, какова исходная причина для socketexception была. это должен быть некоторый тип ошибки в самом сервисе. можно ли расположиться, где точно whar исключение происходит?

у меня были подобные ошибки при попытке возвратить нормальные IEnumerables, которые были перезаписаны (они были отмечены как виртуальные) NHibernate и substitued с GenericPersistentBag, который не является сериализуемым. Вы отметили свой IEnumerable datamembers как виртуальный из-за nhibernate или чего-то подобного? это могло объяснить Вашу ошибку.

btw. wcf исключения часто довольно бессмысленны (который может быть очень печальным при разыскивании ошибки;)

1
ответ дан Joachim Kerschbaumer 29 November 2019 в 06:28
поделиться

Вы определяли в своей сервисной конфигурации поведения? кажется, что некоторая информация отсутствует в этом stacktrace.

может Вы захватывать исключение в стороне сервера (например, в режиме отладки Visual Studio или с регистрирующейся библиотекой как log4net).

Вы попытались назвать некоторые другие методы (простой helloworld (), например) на том же сервисе быть уверенными, что сама сервисная конфигурация работает? этот вид exceptino мог также указать на некоторые проблемы сериализации. какие типы Вы хотите отправить по проводу? Вы используете KnownType где-нибудь?

0
ответ дан Joachim Kerschbaumer 29 November 2019 в 06:28
поделиться
Server Error in '/' Application.
--------------------------------------------------------------------------------

An existing connection was forcibly closed by the remote host 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[SocketException (0x2746): An existing connection was forcibly closed by the remote host]
   System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) +93
   System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) +119

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

[WebException: The underlying connection was closed: An unexpected error occurred on a receive.]
   System.Net.HttpWebRequest.GetResponse() +1532114
   System.ServiceModel.Channels.HttpChannelRequest.WaitForReply(TimeSpan timeout) +40

[CommunicationException: An error occurred while receiving the HTTP response to http://Zzzstrukturservice.xxx.dk/ZzzstrukturService.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.]
   System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +2668969
   System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +717
   xxx.Services.ZzzstrukturServiceClient.ZzzstrukturServiceProxy.IZzzstrukturService.GetMatrixSet(Int32 matrixSetId) +0
   xxx.Services.ZzzstrukturServiceClient.ZzzstrukturRepository.GetMatrixSetById(Int32 matrixSetId) in f:\ccnet\work\xxx.Zzzstruktur\1. Presentation Layer\ZzzstrukturServiceClient\ZzzstrukturRepository.cs:90
   xxx.yyy.yyyWeb.AnnoncePage.OnLoad(EventArgs e) in f:\ccnet\work\yyyV2\1. Presentation Layer\yyyWeb\Annonce.aspx.cs:40
   System.Web.UI.Control.LoadRecursive() +47
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.1433; ASP.NET Version:2.0.50727.1433 
0
ответ дан Per Hornshøj-Schierbeck 29 November 2019 в 06:28
поделиться

Я не знаю, почему это может произойти. но у меня также были подобные проблемы.

я изменил свой enums.remove индексы (например, ASNOrder = 1,-> ASNOrder), и никакая ошибка occoured.

0
ответ дан 29 November 2019 в 06:28
поделиться

У меня тоже была такая же проблема (.NET 3.5). Оказывается мой базовый класс Datacontratt отсутствовал известного типа. К сожалению, ошибка WCF была не более описательной.

1
ответ дан 29 November 2019 в 06:28
поделиться

Не возвращайте литерату Ienumerable в договоре, есть знаменитый BCF BUG

0
ответ дан 29 November 2019 в 06:28
поделиться

Добавьте эту строку в :

<httpRuntime maxRequestLength="102400" executionTimeout="3600" />
3
ответ дан 29 November 2019 в 06:28
поделиться

Да, у меня была та же проблема, и это было связано с возвратом объектов, в которых были значения перечисления. Изменил DataMember на int, и все заработало.

0
ответ дан 29 November 2019 в 06:28
поделиться

Попробуйте установить [OperationBehavior()] над вашей реализацией метода интерфейса.

0
ответ дан 29 November 2019 в 06:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: