2015-11-26 3 views
2

У меня есть следующая 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.

ответ

1

Вы пробовали тег <namespace>? Documentation

Существует также синтаксис, необходимый для типов CLR, которые я не вижу в вашем XML. Вы тоже можете попробовать. Documentation (Кроме того, в документах указано, что вам нужно предоставить такие вещи, как открытый ключ, который мне никогда не нужно было делать при указании типов CLR.)

+0

Я не пробовал этого (не знал об этом). Я отдам его сейчас. – toadflakz

+0

Так оно и было. Необходимо использовать полное квалифицированное имя для сборок. например. 'type =" System.Net.Http.HttpClientHandler, System.Net.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a "' – toadflakz

Смежные вопросы