2010-11-17 16 views
5

मैं किसी सर्वर पर डेटा पोस्ट कर रहा हूं और BeginGetRequestStream को सफलतापूर्वक निष्पादित कर रहा हूं, फिर EndGetRequestStream, RequestStream भरने के लिए अपना पोस्ट डेटा लिखें, और BeginGetResponse को कॉल करें।सिल्वरलाइट सुरक्षा अपवाद

BeginGetResponse सफलतापूर्वक वापस आती है और मैं तो फोन:

Dim response As HttpWebResponse = CType(MyHttpRequest.EndGetResponse(asynchronousResult), HttpWebResponse) 

इस लाइन फेंकता है folloing SecurityException त्रुटि:

{System.Security.SecurityException ---> System.Security.SecurityException: Security error.
at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.b__4(Object sendState)
at System.Net.Browser.AsyncHelper.<>c__DisplayClass2.b__0(Object sendState)

--- End of inner exception stack trace ---
at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at EtsyV2NetSL.WebQuery.POST_ResponseCallback(IAsyncResult asynchronousResult)}

तो मेरा पहला विचार था कि मैं उनके clientaccesspolicy के साथ सर्वर द्वारा अवरुद्ध किया जा रहा था .xml या crossdomain.xml। मैं फ़िडलर ऊपर निकाल दिया गया है और निम्नलिखित देखा:

GET http://openapi.etsy.com/clientaccesspolicy.xml > 596 (text/xml) 
GET http://openapi.etsy.com/crossdomain.xml > 200 OK (application/xml) 

तो मैं उनकी crossdomain.xml की जाँच की और सेटिंग ठीक दिखाई देते हैं:

<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <allow-access-from domain="*"/> 
</cross-domain-policy> 

मैं इस हल करने की कोशिश में एक मरे हुए अंत तक पहुंचते हैं मुसीबत। मैं वीएस से अपनी देव मशीन पर टेस्ट ऐप चला रहा हूं।

क्या किसी के पास कोई विचार है कि क्यों सिल्वरलाइट इस त्रुटि को फेंक देगा?

धन्यवाद

उत्तर

1

ऐसा लगता है यह एक ग्राहक पहुँच नीति मुद्दा है की तरह, यह जाँच:

http://forums.silverlight.net/forums/p/26566/90867.aspx

यह मेरे लिए काम किया।

+0

हां, "" से अनुमति दें - क्लाइंटैकैसपालिसी.एक्सएमएल फ़ाइल में कथन मेरे मामले में समस्या को हल करता है। आपकी सहायताके लिए धन्यवाद! –

1

मैं आज एक बहुत ही इसी तरह की समस्या से निपटा - लेकिन बजाय एक HTTP POST, मैं एक WCF सेवा कॉल करने का प्रयास किया गया था।

यहां मेरे कोड में दी गई टिप्पणी है - कृपया मुझे बताएं कि क्या यह सहायक होने के लिए पर्याप्त स्पष्ट नहीं है।

// NB: Cross-domain bug 
// If you end up here with a System.Security.SecurityException "Security error." 
// Check that you're not trying to cross zones when making a service call 
// (eg: Accessing Trigger Driver TimeSource service on http://IASWEB01/ when accessing the site via usertest.local 
// or any other URI with dots in it - yes it seems crazy) 

यह कुछ सुरक्षा 'सुविधा' प्रतीत होता है। डब्लूसीएफ कॉल के साथ मुझे सिल्वरलाइट क्लाइंट ने लक्ष्य होस्ट से clientaccesspolicy.xml लाने का प्रयास करने से पहले भी यह अपवाद प्राप्त किया था। दृष्टि में वास्तविक समाधान के बिना बहुत परेशान मुद्दा!

+0

जैसा कि आप मेरे फिडलर ट्रेस से देख सकते हैं, सिल्वरलाइट चेक करता है और 'पिछली संगत' नीति फ़ाइल पाता है। तो मैं डोमेन पर जीईटी आदेशों को काफी खुशी से जारी कर सकता हूं। हालांकि मैं किसी तृतीय-पक्ष कंपनी के साथ काम कर रहा हूं और उपयोग की जाने वाली नीति फ़ाइलों पर नियंत्रण नहीं रखता हूं। कोड जो मैं उपयोग कर रहा हूं WinForms/ASP.NET/WPF के साथ ठीक काम करता है; मैंने सिल्वरलाइट के लिए कोड tweaked है लेकिन सुरक्षा अपवाद त्रुटि मार रहा हूँ। यह सिल्वरलाइट से दिखाई देता है कि यह प्रतिक्रिया प्राप्त करने पर ठीक और त्रुटियां भेजता है, हालांकि एक लुकअप करते समय डेटा पोस्ट नहीं किया जाता है। तो पोस्ट/पुट विधियां सुरक्षा अपवाद फेंक रही हैं। – Graeme

+0

और क्या आप फिडलर में पोस्ट आउट देख सकते हैं? यह अभी भी मुझे लगता है कि समस्याएं संबंधित हैं, यानी: http अनुरोध पूरा होने से पहले विफलता या पूरी तरह से निर्मित भी। – bszom

+1

फिडलर पोस्ट को पकड़ नहीं रहा है - इसलिए नहीं बता सकता है। – Graeme

संबंधित मुद्दे