2015-05-17 2 views
0

У меня есть два проекта. У одного есть служба wcf и база данных. Другой используется для вызова этих функций. Если я вызываю функцию webservice, которая добавляет что-то в базу данных, она отлично работает. Но когда я вызываю функцию, которая извлекает что-то из базы данных. Я получаю CommunicationException. Функция Я звоню в WebService.svc.cs является:Вызов функции get wcf throws CommunicationException

public List<Artist> GetAllArtists() 
     { 
      Database1Entities db = new Database1Entities(); 
      return (db.Artists).ToList(); 
     } 

И я звоню его как этот

protected void Page_Load(object sender, EventArgs e) 
    { 
     ServiceReference2.WebServiceClient o = new ServiceReference2.WebServiceClient(); 
     Artist [] artists = o.GetAllArtists(); //Exception arises here 
     string str = ""; 
     foreach (Artist artist in artists){ 
      str += artist.ArtistID + " "; 
     } 
     Response.Write(str); 
     gv.DataSource = artists; 
     gv.DataBind(); 
    } 

Исключение:

System.ServiceModel.CommunicationException был необработанный по коду пользователя HResult = -2146233087 Сообщение = Произошла ошибка при получении ответа HTTP на http://localhost:23060/WebService.svc. Это может быть вызвано привязке конечной точки службы, не использующей протокол HTTP. Этот также может быть вызван тем, что контекст HTTP-запроса прерывается сервером (возможно, из-за отключения службы). Для получения более подробной информации см. Журналы сервера . Источник = mscorlib StackTrace: стек сервера трассировки: в System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException (WebException WebException, HttpWebRequest запрос, HttpAbortReason abortReason) в System.ServiceModel.Channels.HttpChannelFactory1.HttpRequestChannel.HttpChannelRequest.WaitForReply (TimeSpan тайм-аут) в System.ServiceModel.Channels.RequestChannel.Request (сообщение Message, TimeSpan таймаута) в System.ServiceModel.Dispatcher.RequestChannelBinder.Request (Message
сообщение, TimeSpan таймаут) в System.ServiceModel.Channels.ServiceChannel. Call (String action, Boolean oneway, ProxyOperationRuntime operation, Object [] ins, Object [] Диффузоры, TimeSpan тайм-аут) на System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall, операция ProxyOperationRuntime) на System.ServiceModel.Channels.ServiceChannelProxy.Invoke (IMessage
сообщение) Исключение при вызваны повторно [ 0]: на System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, Шеззаде retMsg) на System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData &
msgData, типа Int32) в WebLab6AlbumManagementSystemClient .ServiceReference2.IWebService.GetAllArtists() в WebLab6AlbumManagementSystemClient.ServiceReference2.WebServiceClient.GetAllArtists() в C: \ Users \ Muhammad Rehan \ Documents \ Visual Studio
2013 \ Projects \ WebLab6AlbumManagementSystemClient \ Service
Ссылки \ ServiceReference2 \ Reference.cs: линия 567 в WebLab6AlbumManagementSystemClient. ViewAllArtists.Page_Load (Object
отправителя, EventArgs е) в C: \ Users \ Muhammad Rehan \ Documents \ Визуальная
Студия
2013 \ Projects \ WebLab6AlbumManagementSystemClient \ ViewAllArtists.aspx.cs: линия в System.Web. Util.CalliEventHandlerDelegateProxy.Callback (отправитель объекта, EventArgs e) в System.Web.UI.Control.OnLoad (EventArgs e) в System.Web.UI.Control.LoadRecursive() на System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, булева includeStagesAfterAsyncPoint)

InnerException: System.Net.WebException HResult = -2146233079 Сообщение = Базовое соединение закрыто: Непредвиденная ошибка при приеме. Источник = Система StackTrace: на System.Net.HttpWebRequest.GetResponse() в System.ServiceModel.Channels.HttpChannelFactory1.HttpRequestChannel.HttpChannelRequest.WaitForReply (TimeSpan таймаута) InnerException: System.IO.IOException HResult = -2146232800 Сообщение = Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом. Source = System StackTrace: в System.Net.Sockets.NetworkStream.Read (Байт [] buffer, Int32 offset, Int32 size) в System.Net.PooledStream.Read (Байт [] буфер, смещение Int32, размер Int32) в System.Net.Connection.SyncRead (HttpWebRequest запроса, Boolean userRetrievedStream, Boolean probeRead) InnerException: System.Net.Sockets.SocketException HResult = -2147467259 Сообщение = Ап существующее соединение было принудительно закрыто удаленным узлом Source = System ErrorCode = 10054 NativeErrorCode = 10054 StackTrace: at System.Net.Sockets.Socket.Receive (Byte [] buffer, Int32 offset, Int32 размер, SocketFlags socketFlags) в System.Net.Sockets.NetworkStream.Read (Byte [ ] buffe г, Int32 смещение, Int32 размер) InnerException:

+0

Является ли 'Художник'' DataContract'? – sac1

+0

Это операцияContract. Я имею в виду GetAllArtists() - OperationContract. В то время как ничто не написано на вершине Artist и Artist, сгенерировано из db автоматически, используя модель данных сущностей ado.net из базы данных. –

ответ

0

Все сообщения об ошибках WCF настолько загадочно, что всегда неизвестно, что послужило причиной самой ошибки. Очень вероятно, что причиной вашей ошибки является некоторая проблема сериализации. Попробуйте добавить журнал или написать тест, чтобы сериализовать массив художников, используя DataContractSerializer.

0
protected void Page_Load(object sender, EventArgs e) 
{ 
    ServiceReference2.WebServiceClient o = new ServiceReference2.WebServiceClient(); 
    Artist [] artists = o.GetAllArtists().ToArray(); //Exception will not //come now 
    string str = ""; 
    foreach (Artist artist in artists){ 
     str += artist.ArtistID + " "; 
    } 
    Response.Write(str); 
    gv.DataSource = artists; 
    gv.DataBind(); 
} 

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

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