2010-12-20 10 views
7

मैं एक घोषणात्मक तरीके से प्रमाण सत्यापन को अक्षम करने का एक तरीका ढूंढ रहा हूं। यह बहुत उपयोगी होगा i.e. svcutil.exe का उपयोग करते समय।* .config फ़ाइल से guarantPointManager की ServerCertificateValidationCallback संपत्ति को घोषणात्मक रूप से सेट करने का कोई तरीका है?

अब तक मैं जानता हूँ कि होस्टनाम सत्यापन अक्षम करने के तरीके:

<system.net> 
    <settings> 
     <servicePointManager checkCertificateName="false" /> 
    </settings> 
</system.net> 

लेकिन यह पर्याप्त नहीं है। मैंने किसी को यह दावा किया है कि यह किया जा सकता है, लेकिन किसी भी नमूना के बिना।

<system.net> 
    <webRequestModules xdt:Transform="Insert"> 
     <clear/> 
     <add prefix = "http" type = "HttpRequestCreatorWithServerCertificateValidationCallback, TestHelpers"/> 
     <add prefix = "https" type = "HttpRequestCreatorWithServerCertificateValidationCallback, TestHelpers"/> 
    </webRequestModules> 
</system.net> 

HttpRequestCreatorWithServerCertificateValidationCallback.cs

public class HttpRequestCreatorWithServerCertificateValidationCallback : IWebRequestCreate 
{ 
    static HttpRequestCreatorWithServerCertificateValidationCallback() 
    { 
     var type = typeof(HttpWebRequest).Assembly.GetType("System.Net.HttpRequestCreator"); 
     var ctor = type.GetConstructors()[0]; 
     Creator = (IWebRequestCreate)ctor.Invoke(null); 

     ServicePointManager.ServerCertificateValidationCallback += delegate 
     { 
      return true; 
     }; 
    } 

    #region IWebRequestCreate Members 

    public WebRequest Create(Uri uri) 
    { 
     return Creator.Create(uri); 
    } 

    #endregion 

    private static readonly IWebRequestCreate Creator; 
} 
+0

घोषणात्मक नहीं है, लेकिन आप प्रमाणन की समस्याओं के आसपास फिडलर काम का उपयोग कर सकते हैं और svcutil मूर्ख :) –

उत्तर

0
System.Net.ServicePointManager.ServerCertificateValidationCallback = 
       ((sender, certificate, chain, sslPolicyErrors) => true); 
+0

हाँ, मुझे इसके बारे में पता है, लेकिन यह घोषणा नहीं है। –

4

मैं UnitTests :(

app.config में केवल प्रयोग करने के लिए इस बदसूरत हैक उपयोग कर रहा हूँ HttpClient के साथ काम करते समय:

<system.net> 
    <settings> 
     <servicePointManager 
      checkCertificateName="false" 
      checkCertificateRevocationList="false" /> 
    </settings> 
    </system.net> 

मैंने इसे इंटरनेट से लिया, जहां से याद नहीं है। यह मेरे बैकएंड कॉल के लिए काम करता है।

1

मैं उपयोग कर रहा हूँ इस:

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

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