1

я получаю необработанное TypeInitializationException исключение при попытке установитьTypeInitializationException при установке ServicePointManager.ServerCertificateValidationCallback с отслеживанием от

ServicePointManager.ServerCertificateValidationCallback += (a, b, c, d) => true; 

происходит исключение, когда я получил следующее (взято из MSDN) в моем приложении .config. Единственное отличие от приведенной ниже конфигурации и того, что в MSDN заключается в том, что я установил регистрацию для System.Net, System.Net.Cache, System.Net.Sockets и System.Net.WebSockets - Off. Я вижу только проблему, когда все четыре отключены.

С этой конфигурацией что-то не так, или я пропустил что-то еще?

<system.diagnostics> 
    <sources> 
    <source name="System.Net" tracemode="includehex" maxdatasize="1024"> 
     <listeners> 
     <add name="System.Net"/> 
     </listeners> 
    </source> 
    <source name="System.Net.Cache"> 
     <listeners> 
     <add name="System.Net"/> 
     </listeners> 
    </source> 
    <source name="System.Net.Http"> 
     <listeners> 
     <add name="System.Net "/> 
     </listeners> 
    </source> 
    <source name="System.Net.Sockets"> 
     <listeners> 
     <add name="System.Net"/> 
     </listeners> 
    </source> 
    <source name="System.Net.WebSockets"> 
     <listeners> 
     <add name="System.Net"/> 
     </listeners> 
    </source> 
    </sources> 
    <switches> 
    <add name="System.Net" value="Off"/> 
    <add name="System.Net.Cache" value="Off"/> 
    <add name="System.Net.Http" value="Verbose"/> 
    <add name="System.Net.Sockets" value="Off"/> 
    <add name="System.Net.WebSockets" value="Off"/> 
    </switches> 
    <sharedListeners> 
    <add name="System.Net" 
     type="System.Diagnostics.TextWriterTraceListener" 
     initializeData="network.log" 
    /> 
    </sharedListeners> 
    <trace autoflush="true"/> 
</system.diagnostics> 

Вот стек след за исключением в

at System.Net.ServicePointManager.get_ServerCertificateValidationCallback() 
at test.Program.Main(String[] args) in c:\Users\Eoin\Documents\Visual Studio 2013\Projects\test\test\Program.cs:line 12 
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
at System.Threading.ThreadHelper.ThreadStart() 

Там есть внутреннее исключение, а также типа TypeInitializationException, и стек вызовов содержит только at System.Net.ServicePointManager..cctor() и сообщение «Тип инициализатор«System.Net. ComNetOS «сделал исключение».

Это конечное внутреннее исключение типа ConfigurationErrorsException. Сообщение "Listener" System.Net 'не существует в разделе sharedListeners. " и трассировка стека равна

at System.Diagnostics.ListenerElement.GetRuntimeObject() 
at System.Diagnostics.ListenerElementsCollection.GetRuntimeObject() 
at System.Diagnostics.TraceSource.Initialize() 
at System.Net.Logging.InitializeLogging() 
at System.Net.Logging.get_On() 
at System.Net.ComNetOS..cctor() 
+0

Можете ли вы опубликовать трассировку стека исключений? –

ответ

1

В системе System.Net.Http имеется пространство для имени слушателя.

<source name="System.Net.Http"> 
    <listeners> 
    <add name="System.Net "/> 
    </listeners> 
</source> 

Это будет пытаться найти слушателя по имени "System.Net ", но, конечно, у вас есть только один по имени "System.Net". Просто удалите пространство, и вы золотой.