7

(मुझे अपनी समस्या से संबंधित कई प्रश्नों का अनुरोध नहीं किया है, लेकिन मेरे लिए कोई भी समाधान काम नहीं करता है क्योंकि मुझे उत्पादन में इस समस्या का सामना करना पड़ रहा है, न कि स्थानीय विकास के दौरान, और मेरे पास पहले से ही सभी प्रस्तावित फिक्स का प्रयास किया है।)सिल्वरलाइट डब्ल्यूसीएफ + एसएसएल सुरक्षा त्रुटि - crossdomain.xml ने कभी भी

मेरे पास सिल्वरलाइट 4 एप्लिकेशन है जो आईआईएस द्वारा होस्ट की गई डब्ल्यूसीएफ सेवाओं का उपयोग करता है। उत्पादन में इन सेवाओं को HTTPS पर उपयोग किया जाता है।

An error occurred while trying to make a request to URI 'https://MYDOMAIN/MYSERVICE.svc'. This could be due to attempting to access a service in a cross-domain way without a proper cross-domain policy in place, or a policy that is unsuitable for SOAP services. You may need to contact the owner of the service to publish a cross-domain policy file and to ensure it allows SOAP-related HTTP headers to be sent. This error may also be caused by using internal types in the web service proxy without using the InternalsVisibleToAttribute attribute. Please see the inner exception for more details. ---> System.Security.SecurityException ---> System.Security.SecurityException: Security error...

फ़िडलर का उपयोग करना मैं देख सकता हूँ कि कोई अनुरोध crossdomain.xml या clientaccesspolicy.xml लिए किया जाता है: a valid crossdomain.xml फ़ाइल मैं अभी भी प्रसिद्ध "सुरक्षा त्रुटि" जब सेवा तक पहुंच प्राप्त होने के बावजूद। सर्वर से एक कनेक्ट अनुरोध है लेकिन यह सब कुछ है।

मैंने यह त्रुटि पढ़ी है, हालांकि यह crossdomain.xml/clientaccesspolicy.xml के साथ कोई समस्या इंगित करता है, जब भी सर्वर एक अवैध प्रमाणपत्र जारी करता है तब भी उठाया जा सकता है। यह मेरे परिदृश्य में मामला प्रतीत नहीं होता है।

मैं कुछ कर रहा हूँ निम्नलिखित ठीक से सेट है:
1. crossdomain.xml वैध है और साइट
2. सेवाओं काम करते हो की जड़ में होस्ट (हम जानते हैं कि उन्हें इस्तेमाल विभिन्न प्रौद्योगिकियों में अन्य ग्राहकों है , एडोब फ्लेक्स समेत जो crossdomain.xml पर निर्भर करता है।)
3. सिल्वरलाइट ऐप काम करता है (यह साझा विकास सर्वर पर स्थानीय सेवाओं और सेवाओं के साथ ठीक काम करता है ***)
4. सिल्वरलाइट ऐप भी नहीं crossdomain.xml या clientaccesspolicy.xml (जैसा कि फिडलर द्वारा पुष्टि की गई है) का अनुरोध करने का प्रयास करें
5. सिल्वरलाइट ऐप https पर डब्ल्यूसीएफ तक पहुंचने के लिए उचित कॉन्फ़िगरेशन का उपयोग करता है। नीचे कॉन्फ़िगरेशन है:

<configuration> 
    <system.serviceModel> 
     <bindings> 
      <basicHttpBinding> 
       <binding name="BasicHttpBinding_IMyServices" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> 
        <security mode="Transport" /> 
       </binding> 
       </basicHttpBinding> 
     </bindings> 
     <client> 
      <endpoint address="https://MYDOMAIN/MYSERVICE.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyServices" contract="Services.IMyServices" name="BasicHttpBinding_IMyServices" /> 
     </client> 
    </system.serviceModel> 
</configuration> 

इस तरह की समस्या का और क्या कारण हो सकता है? क्या ऐसा हो सकता है क्योंकि वेब सर्वर संतुलित लोड होते हैं? या क्या प्रमाण पत्र के साथ कोई समस्या है जिसे मैंने नहीं देखा है? यदि आप कम से कम मुझे सही दिशा में इंगित कर सकते हैं जिसे बहुत सराहना की जाएगी।

(*** कुछ बिंदुओं को इंगित करने के लायक: मैं अपने विकास पर्यावरण में एक ही समस्या पर आया। सिल्वरलाइट ऐप एक उचित विकास सर्वर पर डब्ल्यूसीएफ सेवाओं तक पहुंचने में असमर्थ था, उचित क्रॉसडोमेन.एक्सएमएल होने के बावजूद और HTTPS का उपयोग नहीं मैंने आईई में एक विश्वसनीय साइट के रूप में विकास सर्वर को जोड़कर इसके आसपास काम किया। हालांकि यह वही कामकाज उत्पादन के लिए काम नहीं करता है, और फिर भी यह एक स्वीकार्य कामकाज नहीं होगा। लेकिन तथ्य यह है कि मुझे इसे करना था विकास पर्यावरण मुझे चिंतित करता है कि मैंने रास्ते में कुछ याद किया है ...)

+0

आपके सर्वर से कनेक्ट अनुरोध के लिए प्रतिक्रिया कोड क्या है? जब मैं अपने ब्राउज़र में प्रदान किए गए लिंक तक पहुंचता हूं, तो मुझे "403 - निषिद्ध: एक्सेस अस्वीकार कर दिया जाता है" प्रतिक्रिया – wickedtreemonkey

+0

मुझे 200 का प्रतिक्रिया कोड मिलता है। वह लिंक 403 देता है क्योंकि मैं डोमेन की जड़ से लिंक कर रहा हूं प्रतिबंधित है। सर्विस एंडपॉइंट्स, जिन्हें मैं लिंक नहीं करना चाहता हूं, सार्वजनिक रूप से सुलभ हैं और इसलिए 200 की प्रतिक्रिया लौटाते हैं। – Keith

+0

विज़िट http://stackoverflow.com/questions/7847220/clientaccesspolicy-xml-not-requested-the-first टाइम-इन-कुछ ब्राउज़रों। यह शायद सहायक हो। –

उत्तर

10

समस्या यह थी कि मैं clientaccesspolicy.xml गायब था। इस मामले में crossdomain.xml पर्याप्त नहीं था। I सोचें ऐसा इसलिए है क्योंकि डब्ल्यूसीएफ आमंत्रण केवल क्रॉस-ब्राउजर नहीं था बल्कि क्रॉस-प्रोटोकॉल भी था (सिल्वरलाइट ऐप http के माध्यम से परोसा गया था लेकिन सेवाओं को https के माध्यम से परोसा जाता था)।

<?xml version="1.0" encoding="utf-8"?> 
<access-policy> 
    <cross-domain-access> 
     <policy> 
      <allow-from http-request-headers="SOAPAction"> 
       <!-- IMPORTANT! Include these lines --> 
       <domain uri="http://*"/> 
       <domain uri="https://*"/> 
      </allow-from> 
      <grant-to> 
       <resource path="/" include-subpaths="true"/> 
      </grant-to> 
     </policy> 
    </cross-domain-access> 
</access-policy> 

अब यह एक आकर्षण की तरह काम करता है:

इसके अलावा, मेरी clientaccesspolicy.xml स्पष्ट रूप से http लिए उपयोग की अनुमति के रूप में निम्नानुसार था।

कुछ चीजें जो मुझे रास्ते में घुमाती हैं:
* मेरा ब्राउज़र clientaccesspolicy.xml और crossdomain.xml को कैशिंग कर रहा था।आईआईएस को इस फाइल के क्लाइंट कैशिंग को रोकने के लिए कॉन्फ़िगर किया गया है, इस तथ्य के बावजूद कि जब भी मैं उन फ़ाइलों में से किसी एक को बदलता हूं, तो मुझे अपने कैश को साफ़ करना होगा या यह नए संस्करण को नहीं पहचान पाएगा।
* clientaccesspolicy.xml और crossdomain.xml के अनुरोध हमेशा फिडलर में दिखाई नहीं दे रहे थे। मैं अक्सर इसके बजाय कनेक्ट अनुरोध देखेंगे। मुझे इसके कारण का एहसास नहीं है, लेकिन मैंने यह अनुरोध करने के लिए फिडलर पर भरोसा नहीं करना सीखा है कि इन अनुरोधों की पुष्टि की जा रही है। शायद मेरे पास कहीं कुछ दुष्ट सेटिंग है (और नहीं, यह "डिक्रिप्ट HTTPS ट्रैफिक" सेटिंग नहीं है जिसे मैंने पहले से अक्षम कर दिया है)।

3

मुझे वही त्रुटि है, जब मैं http पर अपनी साइट पर कॉल करने का प्रयास करता हूं और मेरी सेवा https से अधिक हो जाती है तो यह विफल हो जाती है। यह त्रुटि तब हुई क्योंकि मेरे आईएसएस के पास कोई प्रमाण पत्र नहीं था, इसलिए, जब ऐप ने क्लाइंटैकस्पालिसी डाउनलोड करने का प्रयास किया, तो यह असफल रहा।

अपने ब्राउज़र पर किसी भी डिबग टूल पर नज़र डालें और clientacccesspolicy फ़ाइल की तलाश करें, फिर जांचें कि यह डाउनलोड हो रहा है या नहीं।