2011-07-20 38 views
0

我有我使用我的客戶端的app.config其自定義的行爲擴展WCF無法加載自定義行爲擴展從強命名大會

<extensions> 
    <behaviorExtensions> 
    <add name="consoleMessageTracing" type="Extensions.ConsoleMessageTracingElement, Extensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/> 
    </behaviorExtensions> 
</extensions> 

這個偉大的工程,但如果我提出我的自定義行爲碼到這是強命名的項目,並更新像下面的行爲:

<add name="consoleMessageTracing" type="Common.WcfExtensions.ConsoleMessageTracingElement, Common.WcfExtensions, Version=1.1.0.0, Culture=neutral, PublicKeyToken=f7ac309eefe2c404" /> 

我得到以下錯誤:

SetUp : System.Configuration.ConfigurationErrorsException : The type 'Common.WcfExtensions.ConsoleMessageTracingElement, Common.WcfExtensions, Version=1.1.0.0, Culture=neutral, PublicKeyToken=f7ac309eefe2c404' registered for extension 'consoleMessageTracing' could not be loaded.

任何人都可以幫助解釋我做錯了什麼?令牌密鑰是正確的,並且程序集的版本是正確的。

更新: 如果我使用WCF配置編輯器,我收到相同的消息。由於某些原因無法讀取DLL,Common.DLL位於bin目錄中。

回答

1

好,那麼你在哪裏部署強命名的程序集?如果它在機器上的GAC中,那麼它應該在那裏找到它。如果它在你的appbase下,那麼第一個程序集ir會查找匹配的DLL名稱(Common.WcfExtensions.dll),如果你碰巧有一個沒有強名稱的程序,那麼它將會失敗。

你可以嘗試使用FusLogVw.exe看個究竟,當它試圖加載程序集 - 有一個指導使用它here

我還發現行爲擴展爲喜歡的東西在空間非常敏感名字。嘗試刪除並添加各種組合的空格

+0

ok,所以給你我的方案 - 我創建了一個單元測試,並帶有對本地WCF服務的服務引用。我更新了我的客戶端配置以使用我的擴展(如上)。 我的測試項目參考了SN組件 - 這會導致錯誤。如果我參考非SN裝配,它的工作原理。所以我可以看到唯一的區別是強烈命名的程序集。 – nologo

+0

好 - 它沒有強烈的命名,這是造成問題,我簽署了我的工作大會 - 出現錯誤,添加了SN鍵,它的工作..必須是別的 – nologo

+0

我想嘗試fuslogvw.exe,看看是否有一個程序集綁定失敗 –