我的unity.config中具有以下Unity XML配置。

<?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正确引用了配置文件。项目中引用了SystemSystem.Net.Http的程序集。

当我在代码中调用UnityContainer.LoadConfiguration()时,将引发异常:


  类型名称或别名System.Net.WebProxy,系统不能为
  解决。请检查您的配置文件并验证此类型
  名称。


每种类型的确切详细信息可以在以下链接中找到:


System.Net.WebProxy
System.Net.Http.HttpClientHandler
System.Net.Http.HttpClient


据我所知(在其他情况下有效),type的格式为何会引发此异常?

编辑:

请注意,我尝试了是否将type="<fully qualified type name>, <assembly name>"添加到", <assembly name>"值中,结果是为type而不是HttpClientHandler引发了相同的异常。

最佳答案

您是否尝试过<namespace>标签? Documentation

还有CLR类型所需的语法,我在您的XML中看不到。您也可以尝试。 Documentation(此外,文档指出,您需要提供诸如公钥之类的东西,而在指定CLR类型时我从来不需要这样做。)

10-06 16:00
查看更多