2012-03-13 42 views
2

關閉簽約欲以城堡TypedFactoryFacility當我有問題城堡DynamicProxy

我使用的是城堡V3.0.0和我創建了一個的ViewFactory,使用

injector.AddFacility(Of TypedFactoryFacility)() 

和:

container.Register(CMR.Component.For(Of IDialogViewFactory)().AsFactory()) 

此代碼一切工作我的機器上很好,但在部署時(虛擬機沒有本地管理員權限)的用戶,他們得到以下錯誤:

Unable to obtain public key for StrongNameKeyPair. 

有各種各樣的threa DS左右,但沒有什麼似乎解決我的問題 - 我該如何使用DynamicProxy機器上誰不/不能訪問到C:\ Documents和Settings \所有用戶\應用數據\微軟\加密\

stack trace of the error是行

Castle.DynamicProxy.ModuleScope.CreateModule(signStrongName As Boolean) 

這似乎暗示強命名可以以某種方式被關閉,但我無法弄清楚如何?

+0

我的程序集都沒有簽名,所以從我讀過http://groups.google.com/group/castle-project-devel/browse_thread/thread/44987adbc81ea79/f358c5125810404a?lnk=gst&q = strongname#f358c5125810404a它不應該強壯地命名動態程序集 – Rich 2012-03-13 15:04:23

+0

你能從異常中顯示堆棧跟蹤嗎? – Bronumski 2012-03-15 17:44:18

+0

你還使用DynamicProxy庫,它現在在Castle.Core – Bronumski 2012-03-15 17:57:28

回答

3

在(即將到來的)3.1版本,你可以做到這一點,你所創建的容器後右:

Container.Kernel.ProxyFactory = new DefaultProxyFactory(disableSignedModule: true); 

在3.0或以上,你可以從DefaultProxyFactory繼承並從那裏設置的值。

0

你有沒有嘗試設置ProxyObjectReference的範圍與自己的ModuleScope

var scope = new ModuleScope(
         savePhysicalAssembly, 
         true /*disableSignedModule*/, 
         strongModulePath, 
         weakAssemblyName, 
         weakModulePath); 

ProxyObjectReference.SetScope(scope); 
+0

堆棧跟蹤我看到http://issues.castleproject.org/issue/DYNPROXY-146?query=%23unresolved這一建議,但不知道放在哪裏的代碼? – Rich 2012-03-16 11:03:02

+0

@我會把它放在你把溫莎連接起來的地方。可能在創建容器之前。 – Bronumski 2012-03-16 11:04:44

+0

沒有不行(在創建容器之前或之後) – Rich 2012-03-16 12:55:49

0

對於其他人誰碰到這個事,我只是有相同的異常,在物理機上。一夜之間沒有任何變化,但這個例外從早上開始。

原來是磁盤空間不足的問題,而動態代理組件無法寫入到磁盤。只是意識到這一點,因爲我偶然注意到了Windows的「低磁盤空間」圖標。 :-P