Ich rufe einen WCF-Dienst von einer SharePoint-Website an und erhalte einen Fehler auf dem Client mit den folgenden Details, wenn ein relativ großes Objektdiagramm zurückgegeben wird.Vage WCF-Fehler auf der Clientseite beim Verarbeiten eines großen Objektdiagramms
Beim Debuggen des Dienstes kann ich sehen, dass das Objekt korrekt contructs und die Methode das endgültige Objekt (das die Liste der anderen Objekte hat) korrekt zurückgibt. Aber ich bekomme eine Ausnahme auf der Client-Seite beim Aufruf der Service-Methode.
Dieser Dienst/diese Methode funktioniert in den meisten Fällen gut. Im Folgenden sind die Service-Konfigurationen (Entschuldigung für schlechte Formatierung)
Service-Config:
<system.serviceModel>
<services>
<service behaviorConfiguration="StandardServiceBehaviour" name="Thd.K2.Web.DataServicesLibrary.Common.Services.AdminService">
<endpoint address="soap" binding="basicHttpBinding" name="AdminService" contract="Thd.K2.Web.DataServicesLibrary.Common.Interfaces.IAdminService" />
<endpoint address="mex" binding="mexHttpBinding" name="Metadata" contract="IMetadataExchange" kind="mexEndpoint" endpointConfiguration="" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="StandardServiceBehaviour">
<serviceMetadata httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="customBinding" hostNameComparisonMode="StrongWildcard" receiveTimeout="00:10:00" sendTimeout="00:10:00" openTimeout="00:10:00" closeTimeout="00:10:00" maxReceivedMessageSize="1000000" maxBufferSize="1000000" maxBufferPoolSize="1000000" transferMode="Buffered" messageEncoding="Text" textEncoding="utf-8" bypassProxyOnLocal="false" useDefaultWebProxy="true">
<readerQuotas maxDepth="2147483647" maxStringContentLength="214748364" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="Transport" />
</binding>
</basicHttpBinding>
<webHttpBinding>
<binding name="webBinding" bypassProxyOnLocal="true" useDefaultWebProxy="false" hostNameComparisonMode="WeakWildcard" sendTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:05:00" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" maxBufferPoolSize="2147483647">
<readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647" />
<security mode="Transport">
</security>
</binding>
</webHttpBinding>
</bindings>
</system.serviceModel>
Client-Methode Dienstinstanz
public static TServiceType GetServiceClient<TServiceType>(ConnStringsType connectionStringType, Page callingPage)
where TServiceType : class
{
var spUrl = GetConnectionString(connectionStringType, callingPage);
var result = new BasicHttpBinding(BasicHttpSecurityMode.None);
if(spUrl.ToLower().StartsWith("https"))
{
result = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
}
result.MaxReceivedMessageSize = int.MaxValue - 1;
result.MaxBufferSize = int.MaxValue-1;
if (!string.IsNullOrEmpty(spUrl))
{
return (TServiceType)Activator.CreateInstance(typeof(TServiceType), result, new EndpointAddress(spUrl));
}
return null;
}
Fehler zu erstellen:
Ein Fehler aufgetreten während des Empfangs der HTTP-Antwort an http://localhost:90/AdminService.svc/soap. Dies könnte daran liegen, dass die Service-Endpunktbindung das HTTP-Protokoll nicht verwendet. Dies kann auch daran liegen, dass ein HTTP-Anforderungskontext vom Server abgebrochen wird (möglicherweise aufgrund des Herunterfahrens des Dienstes). Weitere Informationen finden Sie in den Serverprotokollen. Stack:
Server-Stack-Trace: bei System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException (WebException WebException, HttpWebRequest Anfrage, HttpAbortReason abortReason) bei System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply (Timespan-Timeout) bei System.ServiceModel.Channels.RequestChannel.Request (Message Nachricht, Timespan timeout) bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request (Message Nachricht, Timespan timeout) bei System.ServiceModel.Channels.ServiceChannel.Call (String action, Boolean oneway, ProxyOperationRuntime-Operation, Object [] ins, Object [] outs, TimeSpan-Timeout) an System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage method, ProxyOperationRuntime Betrieb) bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke (Sofortnachricht)
Exception erneut ausgelöst bei [0]: bei System.Runtime. Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (Message & MsgData, Int32 Typ) bei IAdminService.GetBlackoutPeriodsByDescription (String lang, String description) bei AdminServiceClient .GetBlackoutPeriodsByDescription (String lang, String Beschreibung) bei EditBlackoutDates.LoadBlackout (String descriptio n)
Haben Sie die Serverprotokolle überprüft wie die Fehlermeldung schlägt? Was sagen Sie? – Randolpho
Ich konnte keinen Fehler/Ausnahme auf der Dienstseite bemerken. – Vashu