2

我最初发布: https ://stackoverflow.com/questions/15351024/intermittent-errors-with-enterprise-library-using-silverlight-calling-rootvisual

它的标题是 Activation issue like this question Activation error occurred while trying to get instance of type LogWriter

然而,我的工作在 90% 的时间里都能正常工作。这是在进行某些类型的 ajax 调用时。就像某些东西被缓存而不被清除一样。

违规行是

this.RootVisual = EnterpriseLibraryContainer.Current.GetInstance<MainPage>();

我确实切换到使用 Unity 容器,但我最终得到了一个关于容器而不是激活的不同错误。似乎应该有一种方法可以清除发生的任何 DOM 或缓存​​,以便仅针对 silverlight 甚至在 WPF 中都没有的“this.RootVisual”可以准备使用 Current 的服务定位器或容器.

4

1 回答 1

1

您正在正确执行此部分:

this.RootVisual = EnterpriseLibraryContainer.Current.GetInstance<MainPage>();

它必须是你调用它的方式。如果没有您的代码库并与您的团队一起处理您的项目,这很难说。我在 Silverlight 中使用此代码时没有任何问题(RootVisual 仅在 Silverlight 中,甚至在 WPF 中也不存在)。

可悲的是,根据我对这个问题的研究,即使您改用 Unity Container,最终也会遇到与使用“Current”相同的容器实例化问题。

如果你不喜欢它,你真的将不得不深入挖掘并使用 Fiddler 等并导航 DOM 等。然后弄清楚。那或停止使用 Silverlight 等...

该代码非常常用,没有来自“大多数人”的问题 这是一个示例 http://entlib.codeplex.com/discussions/285472

希望这会有所帮助,我希望我能解决你的问题。

于 2013-03-21T06:57:03.640 回答