在Visual Studio中,我有一个使用MS Enterprise Library 4.0应用程序块的asp.net 3.5项目。 当我打开我的Webconfiguration文件时,我的错误列表中填充了99条消息 Could not find schema information for the element 'dataConfiguration'. Could not find schema information for the attribute 'defaultDatabase'. Could not find schema information for the element 'loggingConfiguration'. Could not find schema information for the attribute 'tracingEnabled'. Could not find schema information for the attribute 'defaultCategory'. 如果我closures了Web.config文件,它们就会消失(但是当我需要再次打开文件时它们会立即返回)。 在做了一些观察之后,我发现这是因为缺lessVisual Studio需要的XSD或模式文件才能正确“理解”web.config文件中的模式并为其提供智能感知。 […]
我有以下服务装饰 <ExceptionShielding("MyExceptionPolicyName")> 当一个错误exception被抛出时,我的策略会检测到错误并且很好地login。 它采用handlingInstance Id并将其与错误一起logging以供参考。 我注意到的是,在错误中返回的Guid“Error ID:”与传入处理instanceId的错误不同。 我也试图装饰这样的操作 <FaultContract(GetType(ValidationFault))> 但是这会产生相同的结果。 我想要做的是如何捕捉到“错误ID:”传回给消费者,所以我可以logging它与例外。 *补充信息:exception策略处理程序是一个自定义exception,它将各种属性和数据logging到特定的exception日志数据库模式中。 任何人都知道如何做到这一点? 更新:每@ Jay Patel的评论,我把这个添加到我的configuration启用跟踪 <system.diagnostics> <sources> <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true"> <listeners> <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData= "c:\Temp\Traces.svclog" /> </listeners> </source> </sources> </system.diagnostics> 然后,我执行了一个请求来获得由exception屏蔽屏蔽的故障响应。 错误响应string格式如下:“使用此服务时发生错误,请与您的pipe理员联系以获取更多信息。错误ID:{GUID}” 然后我查看了跟踪日志,发现没有任何证据的GUID或这个string。 在使用ExceptionShielding时,任何关心查看其示例的人都可以通过tracelog链接到这个tracelog。 UPDATE2: 再次,根据@Jay Patel的评论,补充说。 我为maxMessageLog尝试了-1和max int值,以确保获得该日志中的最大数据量。 <diagnostics> <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="2147483647" /> </diagnostics> 日志没有帮助。 它甚至不包括任何关于回答我的问题的事情。 为了澄清的情况下,不清楚上面…我希望能够在消息中的“错误ID:”后面捕获的GUID回到客户端,所以我可以loggingexception处理程序logging的exception。 […]
Unitydependency injection容器似乎是一个众所周知的问题,其中SynchronizedLifetimeManager通常会导致Monitor.Exit方法抛出一个SynchronizationLockException,然后被捕获并被忽略。 这对我来说是一个问题,因为我喜欢使用Visual Studio进行debugging,以打破任何抛出的exception,所以每当我的应用程序启动时,我都无故打断这个exception多次。 我怎样才能防止这个exception被抛出? 无论在networking上的其他地方提到这个问题,build议通常包括更改debugging器设置以忽略它。 这类似于去看医生,说:“医生,医生,当我举起arm时,我的arm会疼。”被告知:“好吧,停止抬高它。 我正在寻找一个解决scheme,停止exception被抛出首先。 在SetValue方法中发生exception,因为它假定GetValue将被首先调用,其中Monitor.Enter被调用。 但是,LifetimeStrategy和UnityDefaultBehaviorExtension类都定期调用SetValue而不调用GetValue。 我宁愿不必更改源代码并维护我自己的Unity版本,所以我希望有一个解决scheme,我可以在容器中添加一些扩展,策略或策略的组合,以确保终身pipe理器是一个SynchronizedLifetimeManager,GetValue总是在别的之前被调用。
有没有人知道Microsoft.Practices.ServiceLocation来自哪里? 这是MS EnterpriseLibrary中使用的命名空间和DLL。 无可否认,这是一个非常简单的dll,只有less数类(使用reflection器),但是我找不到它的发布源代码。 它不在Enterprise Library项目中,也不在Unity项目中。 那么有人知道这个源代码是否已经发布了? 而且为什么它不是Unity的一部分? 它用在其他地方吗?
使用Enterprise Library Unity与其他IoC容器(Windsor,Spring.Net,Autofac ..)有什么优点和缺点?