मैं एक घोषणात्मक तरीके से प्रमाण सत्यापन को अक्षम करने का एक तरीका ढूंढ रहा हूं। यह बहुत उपयोगी होगा 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;
}
घोषणात्मक नहीं है, लेकिन आप प्रमाणन की समस्याओं के आसपास फिडलर काम का उपयोग कर सकते हैं और svcutil मूर्ख :) –