2015-11-23 51 views
1

假設我有一個web.config以下兩個相同的部分:爲什麼我可以在web.config中有多個相同的綁定重定向?

<dependentAssembly> 
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> 
</dependentAssembly> 


<dependentAssembly> 
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> 
</dependentAssembly> 

爲什麼這個工作,並將如果有人改變了重定向的一個,如newVersion="4.0.0.0"而不是newVersion="6.0.0.0"發生什麼呢?

回答

4

如果您爲一個程序集定義了多個綁定重定向,它將使用找到的第一個並忽略所有其他程序集。

因此,如果您將第一個newVersion更改爲4.0.0.0,則運行時將嘗試加載程序集的4.0.0.0版。第二個重定向被忽略。請參閱How the Runtime Locates Assemblies。當我理解正確的話它tooks具有匹配assemblyIdentity

的元素是爲了敏感的第一個元素.....在重定向 衝突的情況下,首先在 配置匹配重定向聲明文件被使用。

https://msdn.microsoft.com/en-us/library/433ysdt1(v=vs.100).aspx

+1

兩者你知道爲什麼它忽略了別人,而不是拋出一個異常? –

相關問題