انتهت مهلة قناة الطلب أثناء انتظار الرد بعد الساعة 00:00:59
-
10-12-2019 - |
سؤال
أنا أكتب خدمة ويب SharePoint أساسية جدًا.لقد اختبرت مقابل المكتبة الصغيرة لعام 2010 وهي تعمل بشكل جيد في كل مرة.
تأتي المشكلة مع خادم MOSS 2007 حيث تكون المكتبة كبيرة جدًا.أنا أستخدم .Net 3.5 ومع أقل من ثلاثة أسطر من التعليمات البرمجية، أحصل على خطأ بشكل عشوائي، انتهت مهلة قناة الطلب أثناء انتظار الرد بعد الساعة 00:00:59.إذا قمت بزيادة المهلة ، فلا يزال الأمر عشوائيًا ، فأنا أخطأ ، تم إغلاق الاتصال الأساسي:تم إغلاق الاتصال بشكل غير متوقع.
ListsSoapClient client = new ListsSoapClient();
client.ClientCredentials.Windows.ClientCredential
= System.Net.CredentialCache.DefaultNetworkCredentials;
client.ClientCredentials.Windows.AllowedImpersonationLevel
= System.Security.Principal.TokenImpersonationLevel.Impersonation;
XmlElement listCollection = client.GetListCollection();
ليس لدي أدنى فكرة عن سبب انتهاء المهلة وانقطاعها بشكل عشوائي، ولا يواجه الخادم أية مشكلات.لدي U2U CAML builder وباستخدامه يمكنني تنفيذ الاستعلام دون توقف والحصول على النتائج على الفور.
أعتقد أن هناك خطأً ما في ملف app.config الخاص بي أو شيئًا أحتاج إلى تعيينه في جانب العميل.
يحتوي ملف app.config الخاص بي على الإعداد أدناه،
<binding name="ListsSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm"/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
<readerQuotas maxDepth="32" maxStringContentLength="8192"
maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binding>
و
<client>
<endpoint address="http://ap/AP/_vti_bin/Lists.asmx" binding="basicHttpBinding"
bindingConfiguration="ListsSoap" contract="SharePointListWebService.ListsSoap"
name="ListsSoap" />
<endpoint address="http://ap/AP/_vti_bin/Copy.asmx" binding="basicHttpBinding"
bindingConfiguration="CopySoap" contract="SharePointCopyWebService.CopySoap"
name="CopySoap" />
</client>
أتلقى الخطأ أدناه عندما أغير كل الوقت إلى 10 دقائق.ومرة أخرى، لها عشوائي.
Unhandled Exception: System.ServiceModel.CommunicationException: The underlying
connection was closed: A connection that was expected to be kept alive was close
d by the server. ---> System.Net.WebException: The underlying connection was clo
sed: A connection that was expected to be kept alive was closed by the server.
at System.Net.HttpWebRequest.GetResponse()
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpCha
nnelRequest.WaitForReply(TimeSpan timeout)
--- End of inner exception stack trace ---
Server stack trace:
at System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebExc
eption(WebException webException, HttpWebRequest request, HttpAbortReason abortR
eason)
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpCha
nnelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeS
pan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message messag
e, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean on
eway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan tim
eout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean on
eway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCall
Message methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage req
Msg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgDa
ta, Int32 type)
at FetchInvoicesFromSharePointForMaximo.SharePointListWebService.ListsSoap.Ge
tListCollection(GetListCollectionRequest request)
at FetchInvoicesFromSharePointForMaximo.SharePointListWebService.ListsSoapCli
ent.FetchInvoicesFromSharePointForMaximo.SharePointListWebService.ListsSoap.GetL
istCollection(GetListCollectionRequest request) in C:\FetchInvoicesFromSharePoin
tForMaximo\FetchInvoicesFromSharePointForMaximo\Service References\SharePointLis
tWebService\Reference.cs:line 2267
at FetchInvoicesFromSharePointForMaximo.SharePointListWebService.ListsSoapCli
ent.GetListCollection() in C:\FetchInvoicesFromSharePointForMaximo\FetchInvoices
FromSharePointForMaximo\Service References\SharePointListWebService\Reference.cs
:line 2273
at FetchInvoicesFromSharePointForMaximo.Program.Main(String[] args) in C:\Fet
chInvoicesFromSharePointForMaximo\FetchInvoicesFromSharePointForMaximo\Program.c
s:line 32
المحلول 2
لقد أصلحت المشكلة ولكني لست متأكدًا من سبب حدوث ذلك، ربما يمكن لبعض الخبراء التعليق عليها.
كان الحل هو أنه بدلاً من الإضافة كمرجع خدمة قمت بإضافته كمرجع ويب وكان ذلك بمثابة خدعة.
افتراضاتي للأسباب أدناه ،
- إما أن MOSS 2007 لا يحب العميل الوكيل الذي تم إنشاؤه بواسطة مرجع الخدمة
- لدينا في شبكتي تطبيقان بنفس الاسم في مجال مختلف، على الرغم من أنني كنت أستخدم اسمًا مؤهلاً بالكامل في مرجع الخدمة لذا لا ينبغي أن يكون هذا هو السبب
شكرًا
نصائح أخرى
تغيير ما يلي:
closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00"
ل:
closeTimeout="00:10:00" openTimeout="00:10:00"
receiveTimeout="00:10:00" sendTimeout="00:10:00"