我遇到了3.1版本的日志应用程序块的问题......
使用3.5框架,我的应用程序在我的桌面上工作正常...一旦它部署到我们的qa盒子......日志记录停止运行.web.config在两种情况下都是相同的.有任何想法吗?权限问题?
经过快速诊断后...在调试模式下编译时可以正常工作但不能释放...任何人都知道要更改的设置以使其在发布模式下工作吗?
我们正在使用企业库4.1异常处理应用程序块的ExceptionShielding功能以及与我们的WCF服务的自定义RoleProvider.
当RoleProvider确定用户不在角色中并从IsInRole方法返回false时,发生以下异常:
System.ServiceModel.Security.MessageSecurityException, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
No signature message parts were specified for messages with the '{XXX}' action.
然后WCF中止RequestContext服务操作,客户端超时.
我试图在此链接中提到的解决方案没有成功:
http://www.codeplex.com/entlib/Thread/View.aspx?ThreadId=25236
我们还System.Exception从EHAB政策中删除了异常类型,实际上EHAB对此策略没有任何作用,这没有任何效果.
防止此异常的唯一方法是ExceptionShielding在服务实现上注释掉该属性.
对此问题的任何修复都将非常感激.
我正在尝试使用Microsoft的Enterprise Library设置日志记录(log4net似乎是一个死的项目).我正在使用VB .NET 2008和VS 2008.我搜索了所有MSDN文档,CodePlex文档(包括安装然后消失的动手实验室)和在线教程无济于事.
它们都是指一个我无法找到但似乎无法添加的神秘的"配置文件"或"App.config".我甚至尝试添加一个新的文本文件并将其重命名为"App.config",但这只会使VS 2008在空白文件上吐出一条红色波浪线.
任何建议找到难以捉摸的app.config将不胜感激.
(并且,如果这使得EntLib配置工具出现,我将非常高兴)
编辑:我被骗了!
VS 2008中的树不是真正的超集子集关系,这就是为什么我如此沮丧.
也就是说,树顶: alt文本http://static.zooomr.com/images/7954203_910064e809.jpg
树的"子部分". alt text http://static.zooomr.com/images/7954204_69e03c8502.jpg
我正在使用Microsoft Visual Studio 2005和Enterprise Library 3.1.
我有一个数据访问层,它是一个单独的visual studio类库项目.我在另一个类库中编写单元测试并尝试调用数据访问方法,但我一直在努力
PSMCP.Dal.Tests.DataManagerTests.GetAAAReturnsDataReader:
System.NullReferenceException : Object reference not set to an instance of an object.
at Microsoft.Practices.EnterpriseLibrary.Data.DatabaseMapper.MapName(String name, IConfigurationSource configSource)
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.ConfigurationNameMappingStrategy.BuildUp(IBuilderContext context, Type t, Object existing, String id)
at Microsoft.Practices.ObjectBuilder.BuilderBase`1.DoBuildUp(IReadWriteLocator locator, Type typeToBuild, String idToBuild, Object existing, PolicyList[] transientPolicies)
at Microsoft.Practices.ObjectBuilder.BuilderBase`1.BuildUp(IReadWriteLocator locator, Type typeToBuild, String idToBuild, Object existing, PolicyList[] transientPolicies)
at Microsoft.Practices.ObjectBuilder.BuilderBase`1.BuildUp[TTypeToBuild](IReadWriteLocator locator, String idToBuild, Object existing, PolicyList[] transientPolicies)
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.EnterpriseLibraryFactory.BuildUp[T](IReadWriteLocator locator, IConfigurationSource configurationSource)
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.EnterpriseLibraryFactory.BuildUp[T](IConfigurationSource configurationSource)
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.NameTypeFactoryBase`1.CreateDefault()
at Microsoft.Practices.EnterpriseLibrary.Data.DatabaseFactory.CreateDatabase()
at PSMCP.Dal.PSMCPDataManager.GetAAACall(String …Run Code Online (Sandbox Code Playgroud) 我们目前的项目中,我们决定使用记录的企业图书馆,现在高达我们只使用log4net的,但我找不到任何建议如何真正使用图书馆的灵活的方式,我的意思是log4net的,这将是这样:
//define this in MyClass
private static readonly ILog log = LogManager.GetLogger(typeof(MyClass));
//and than in the methods you can call it like this
log.Info("info message");
Run Code Online (Sandbox Code Playgroud)
这将使我去申请后,并通过chainging配置我可以把信息/警告特定类levelels无需触摸应用.
唯一的日志库示例基本上是这样的:
LogEntry logEntry = new LogEntry();
logEntry.EventId = 100;
logEntry.Priority = 2;
logEntry.Message = "Informational message";
logEntry.Categories.Add("Trace");
logEntry.Categories.Add("UI Events");
Logger.Write(logEntry);
Run Code Online (Sandbox Code Playgroud)
但是我必须根据一些带有拼写错误和类似字符串的字符串进行过滤,并且每个开发人员都会介绍他的类别标记,限制此问题的最佳方法是什么,构建消息的最佳实践是什么,另一方面是解决方案是对于单个日志消息需要10行的开发人员友好,对整个解决方案使用一些静态方法会降低过滤的灵活性,那么使用日志记录的最佳方法是什么?
你找到了任何有意义的模式如何使用它?
谢谢almir
脚本
.NET/WPF桌面应用程序应本地化(或以MS术语全球化)使用与英语不同的语言.也就是说,UI需要完全采用(标签,图标......).
但是,日志文件条目,审计跟踪条目和应用程序的其他输出应保留为英语,以便英语服务/支持人员对其进行审核.他们不会讲法语或中文.
该应用程序依赖于RESX文件来完成本地化.
企业库验证块用于验证对象模型上的业务规则.
现在假设有一个服务在执行实际业务逻辑之前验证其给定的对象模型参数.在某些情况下,它会收到无效的对象模型参数,但会尽最大努力继续执行.但是,应在审计跟踪和日志文件中记录无效对象模型数据的提供.
使用验证块的服务示例.
public class Service : IService
{
public void MyMethod(MyObjectModelObject obj)
{
Validator validator = ValidationFactory.CreateValidator(typeof(MyObjectModelObject));
ValidationResults results = validator.Validate(this);
// !!! The messages in the validation results are now already localized to CurrentCulture.
// ... build a log message: msg
if (results.Count > 0)
{
Logger.Log(msg);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如代码注释中所述,当您在EnterpriseLibrary验证程序上调用Validate()时,验证消息已经本地化为法语,您没有机会将它们写入例如英语日志文件.
在我们的应用程序的其他方面,我们使用一个消息类来封装资源ID和参数,直到我们确定我们想要使用哪种文化来解析实际的字符串值.您可以将其称为延迟资源解析.
有关如何将相似机制引入企业库验证块的任何想法?目前为止的想法:
感谢您的帮助和分享想法!
.net globalization enterprise-library localization validation-application-bl
问题范围:我想使用EF4.1而不需要权衡我所知道和信任的企业库数据访问块的速度和可靠性.
感谢很多关于EF性能调优的Stackoverflow链接和博客,我发布这种方式,使用与ADO/Enterprise Lib数据访问块(SqlDataReader)的性能相匹配的EF4.1.
项目:1.没有linq到Entities/dynamic sql.我喜欢linq,我只是试着用它来反对对象.2. 100%存储过程并且没有跟踪,没有合并,最重要的是,从不调用.SaveChanges().我只是调用insert/update/delete proc DbContext.StoredProcName(params).在这一点上,我们已经消除了EF的几个快速开发元素,但它为你的存储过程自动创建一个复杂类型的方式对我来说已经足够了.
GetString和类似的方法是一个AbstractMapper,它只是遍历期望的类型并将datareader转换为类型.

所以这是我所关注的标志.采用我所知道的较慢的东西是很难的.

那太快了!!! 慢很多!

那更像是!! 性能饼 根据我的结果,性能饼应该会使跟踪开销增加1%以上,我尝试预先编译视图,没有任何东西像没有跟踪那么大!为什么??也许有人可以参与其中.
所以,这个与Enterprise Lib相比并不公平,但是我正在对数据库进行一次不定时的调用,以加载我理解为每个IIS应用程序池加载一次的元数据.基本上一次在您的应用程序的生命周期.

我使用EF这种方式生成自动存储过程,我使用Linq到Edmx自动导入所有这些edmx函数节点以映射到实体.然后我自动生成每个实体和引擎的存储库.
由于我从不调用SaveChanges,因此我不打算花时间映射到设计器中的存储过程.它需要太长时间,很容易打破它而不知道它.所以我只是从上下文中调用procs.
在我在新的关键任务医疗设备交付网络应用程序中实际实现这一点之前,我将非常感谢任何观察和批评.
谢谢!
也许我表现出我对依赖注入和测试缺乏了解,但我不明白如何使用依赖注入与不实现接口的类有助于我进行测试?
例如,在Enterprise Library 5.0文档中,它讨论了使用Unity容器创建实例.它说这有助于"可测试性:在使用依赖注入样式时,将类与依赖关系隔离起来是微不足道的." MSDN
如何在我的单元测试装置中使用它?他们的示例有一个构造函数,其参数为类而不是接口:
public class TaxCalculator
{
private ExceptionManager _exceptionManager;
private LogWriter _logWriter;
public TaxCalculator(ExceptionManager em, LogWriter lw)
{
this._exceptionManager = em;
this._logWriter = lw;
}
}
Run Code Online (Sandbox Code Playgroud) 我已将我的项目与另一个项目集成(MVC3应用程序).然后我得到以下错误.这两个项目都可以与Microsoft Enterprise Library版本5.2.414.0一起正常运行.集成后只有一些页面正在工作,剩下的页面抛出异常.
无法加载文件或程序集"Microsoft.Practices.EnterpriseLibrary.Data,Version = 5.0.414.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"或其中一个依赖项.该系统找不到指定的文件.
我ExecuteNonQuery用来运行插入proc,它返回2,但实际上我只插入1条记录.由于触发,我得到1个额外的.无论如何我只得到实际受影响的行数.我不希望受触发器影响的行.
c# ×3
.net ×1
asp.net ×1
c#-4.0 ×1
exception ×1
localization ×1
logging ×1
nunit ×1
sql-server ×1
unit-testing ×1
vb.net ×1
wcf ×1