2009-08-12 14 views
7

मेरा पहला AJAX प्रयास करते समय, मैंने आईआईएस होस्टेड डब्ल्यूसीएफ का उपयोग करने के लिए भी फैसला किया। अजीब चीज यह है कि डब्ल्यूसीएफ उसी उपयोगकर्ता/सत्र के लिए समानांतर अनुरोधों को संसाधित नहीं कर सकता है, यदि सत्र मोड सक्षम है! यदि एएसपीनेट पर सत्र मोड अक्षम है, तो अनुरोध समानांतर संसाधित होते हैं। ब्रोसर/क्लाइंट कई अलग-अलग अनुरोध निष्पादित कर सकता है, जहां उनमें से कुछ लंबे समय तक चल रहे हैं। यह सभी और आवश्यकताओं को अवरुद्ध करता है और मेरा AJAX ऐप अनुपयोगी बनाता है।सत्र ऑब्जेक्ट को पढ़ने के लिए एक आईआईएस होस्टेड डब्ल्यूसीएफ या एएसएमएक्स [webservice] को कैसे मजबूर किया जाए?

यह एएसएमएक्स [webservices] पर भी लागू होता है। "IReadOnlySessionState" इंटरफ़ेस का उपयोग कर webservice विधियों को संकलित करने के लिए मुझे एक बड़ी उम्मीद थी, लेकिन यह - वेबपृष्ठों के लिए oppsite में - कोई प्रभाव नहीं है। लेकिन मुझे एएसपीनेट सत्र में [ज्यादातर बार पढ़ा जाता है] पहुंच की ज़रूरत है!

क्या कोई इस समस्या का समाधान जानता है।

वैसे भी, बहुत बहुत धन्यवाद! -

br mabra

उत्तर

0

मैं इस पाया:

http://blogs.msdn.com/silverlightws/archive/2009/09/30/having-a-pollingduplex-service-and-any-other-wcf-service-in-the-same-website-causes-silverlight-calls-to-be-slow.aspx

जिसमें कहा गया है,

"अगर आप ASP.Net सत्र सक्षम सभी WCF सेवाओं/लिखने सत्र स्थिति तक पढ़ने की पहुंच की आवश्यकता होती है , जो उत्तरों को अनुक्रमिक रूप से कतारबद्ध करने का कारण बनता है। आदर्श रूप से उपयोगकर्ता को केवल पढ़ने के लिए डब्ल्यूसीएफ हैंडलर को कॉन्फ़िगर करने में सक्षम होना चाहिए, जो मतदान डुप्लेक्स सेवाओं को सत्रों के साथ काम करने की अनुमति देगा। दुर्भाग्यवश यह इस पी पर असमर्थित है oint। "

... केवल एक चीज जिसे मैं सोच सकता हूं वह है कि अगर लॉक की जल्दी रिलीज को मैन्युअल रूप से मजबूर करने का कोई तरीका है। मैं अब उसमें देख रहा हूँ।

+0

हाय यह कर सकते हैं! आपकी पोस्टिंग के लिए धन्यवाद! यह डब्ल्यूसीएफ का उपयोग न करने का एक और कारण बताता है। मैं WebServices की कोशिश की, जो एक ही gehavoir है लगता है। हालांकि यह अधिक काम है, मैं जगह में concurreny साथ ASMX उपयोग कर रहा हूँ .... एमएस नई technoligies कभी कभी स्टोनहेंज से रहे हैं ... धन्यवाद एक बहुत !! --mabra – mabra

0

आप एक कस्टम सत्र स्थिति प्रदाता प्रदान कर सकते हैं

देखें: http://koolsand.blogspot.com/2010/02/why-iis-hosted-wcf-services-does-not.html

जब भी एक अनुरोध पथ यह डिफ़ॉल्ट सत्र सूचित करता केवल पढ़ने का उपयोग ताला और न पढ़ें- को राज्य प्रदाता में एसवीसी शामिल लॉक लिखें। इसलिए रीडोनली लॉक का उपयोग अगले wcf कॉल को समवर्ती रूप से निष्पादित करने की अनुमति देगा।

+0

BTW .. मैं MSDN लिंक ब्लॉग ऐश द्वारा पोस्ट की गई – felickz

+0

अरे, बहुत अच्छा के बंद इस लिंक मिल गया! आपका बहुत बहुत धन्यवाद! – mabra

+0

बहुत खराब यह प्रतिबिंब :( – felickz

15

.NET 4 में, आप में Application_BeginRequest

if (Context.Request.Path.EndsWith("xxx.svc")) 
    Context.SetSessionStateBehavior(SessionStateBehavior.ReadOnly); 
+0

वाह, एक कोशिश के लायक परेशानी की एक टन से छुटकारा पाने के ...आप AcquireRequestState पाइपलाइन ईवेंट – felickz

+0

से पहले इसे किसी भी समय कॉल कर सकते हैं क्या कोई तरीका है कि आप इसे कस्टम व्यवहार या विशेषता में बदल सकते हैं, इसलिए आपको अपनी वैश्विक.एएसएक्स फ़ाइल में यह प्रत्येक सेवा निर्दिष्ट करने की आवश्यकता नहीं होगी? –