У меня есть следующая XML-конфигурация Unity в моем unity.config
.Почему эта XML-конфигурация Unity не разрешает типы?
<?xml version="1.0" encoding="utf-8" ?>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<container>
<register type="System.Net.WebProxy, System" name="webProxy">
<constructor>
<param name="Address" value="proxy.corporate.com:8080" type="System.String"/>
<param name="BypassOnLocal" value="false" type="System.Boolean"/>
</constructor>
</register>
<register type="System.Net.Http.HttpClientHandler, System.Net.Http" name="proxyClientHandler">
<property name="Proxy">
<dependency name="webProxy"/>
</property>
<property name="PreAuthenticate" value="true"/>
<property name="UseDefaultCredentials" value="false"/>
</register>
<register type="System.Net.Http.HttpClient, System.Net.Http">
<constructor>
<param name="handler">
<dependency name="proxyClientHandler"/>
</param>
</constructor>
</register>
</container>
</unity>
Конфигурационный файл правильно ссылаться из app.config
. В проекте указаны сборки для System
и System.Net.Http
.
Когда я называю UnityContainer.LoadConfiguration()
в моем коде создается исключение:
Имя типа или псевдоним System.Net.WebProxy, система не может быть решена . Проверьте файл конфигурации и подтвердите это имя .
Точные детали для каждого типа можно увидеть на ссылки ниже:
Почему это исключение бросают, когда формат для type
, насколько я знаю (и работал в других ситуации), type="<fully qualified type name>, <assembly name>"
?
Edit:
Пожалуйста, обратите внимание, что я попытался с и без добавления ", <assembly name>"
в значение type
и результатом было то, что то же самое было брошено исключение для HttpClientHandler
вместо WebProxy
.
Я не пробовал этого (не знал об этом). Я отдам его сейчас. – toadflakz
Так оно и было. Необходимо использовать полное квалифицированное имя для сборок. например. 'type =" System.Net.Http.HttpClientHandler, System.Net.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a "' – toadflakz