在每个应用程序启动时滚动一次的代码中配置log4net RollingFileAppender

我想创建一个log4net RollingFileAppender,每次程序启动时都会创建一个新文件。 如果文件变大,它可以滚动,但每次启动应用程序时都必须滚动。 如果在配置中配置了另一个appender,则不应添加appender。 实质上,创建可以通过更改配置文件来覆盖的默认日志配置。

Request.IsLocal

这个属性是可欺骗的,还是100%值得信赖的? 我想确定一个请求只来自我的盒子。 我必须添加这句话因为我不能提出简单的问题。

如何在C#中执行快速Web请求

我有一个基于HTTP的API,我可能需要多次调用。 问题是我无法获得少于约20秒的请求,尽管通过浏览器发出的相同请求几乎是即时的。 以下代码说明了到目前为止我是如何实现它的。 WebRequest r = HttpWebRequest.Create(“https://example.com/http/command?param=blabla”); var response = r.GetResponse(); 一种解决方案是进行异步请求,但我想知道为什么需要这么长时间,如果我可以避免它。 我也尝试过使用WebClient类,但我怀疑它在内部使用WebRequest。 更新: 在发布模式下运行以下代码大约需要40秒(使用秒表测量): WebRequest g = HttpWebRequest.Create(“http://www.google.com”); var response = g.GetResponse(); 我在一所大学工作,网络配置可能会有不同的因素影响性能,但直接使用浏览器表明它应该接近即时。 更新2: 我将代码上传到远程计算机并且工作正常,因此结论必须是.NET代码与浏览器相比做了额外的事情,或者它在通过大学网络解决地址时遇到了问题(代理问题还是什么?!)。

避免在域模型中使用JsonIgnore属性

我有一个包含多个实体类的域模型组件。 在另一个组件中,我使用Json.NET序列化实现了实体存储库。 我希望在序列化期间忽略一些实体属性,因此直接的解决方案是使用JsonIgnore属性修饰这些属性。 但是,在原则上,我想避免在我的域模型中引用其他组件 – 包括第三方库,如Json.NET。 我知道我可以创建一个自定义合同解析器,如此处所述,但很难概括在各种实体中序列化和不序列化的内容。 通常我想忽略所有只读属性,但是例如集合有例外: public List Pixels { get { return this.Pixels; } } 我也可以为这里描述的每个实体创建一个专用的合同解析器,但对我来说这似乎是一个高维护的解决方案 – 特别是对于众多实体。 理想的解决方案是,如果Json.NET支持.NET框架中的某些属性,但我甚至找不到合适的候选者…… 我考虑在我的域模型中创建自己的自定义Ignore属性,并制作一个自定义契约解析器,它使用reflection来检测此属性,并在序列化时忽略修饰的属性。 但这真的是给定问题的最佳解决方案吗?

signalR – 获取用户名

我正在使用signalr和asp.net MVC3来构建示例聊天应用程序。 这是我的信号器中心的样子 public class MyHub:Hub,IDisconnect { public Task Join() { string username = HttpContext.Current.User.Identity.Name; //find group based on username string group = getGroup(username) return Groups.Add(Context.ConnectionId, group); } public void doStuff() { string group = getGroup(); Clients[group].doStuffOnBrowser(); } } 我的问题是我的应用程序在页面加载时崩溃了。 在使用调试器时,我发现即使用户已经过身份validation,HttpContext.Current.User.Identity.Name仍为null。 如何在Task Join()方法中获取用户名?

ValidationMessageFor与AddModelError(key,message)一起使用。 关键是什么?

我正在为某个viewModel属性开发客户端和服务器端validation。 在.cshtml文件中我把它: @Html.DropDownListFor(model => model.EntityType.ParentId, Model.ParentTypeList, “”) @Html.ValidationMessageFor(model => model.EntityType.ParentId) 在Controller中进行业务validation catch (BusinessException e) { ModelState.AddModelError(“EntityType.ParentId”, Messages.CircularReference); } 以上工作符合预期:如果捕获到exception,则消息将显示在下拉列表旁边。 但是,我发现这种方式并不是很优雅。 在cshtml ,我使用一种方法来生成有关validation的所有必需信息。 在控制器中,我必须知道确切的Key字符串并使用它。 这样做有没有更好的方法?

在64位计算机上以32位模式运行Oracle客户端

我刚刚从32位Windows 7桌面迁移到64位Windows 7笔记本电脑。 我们正在开发一个包含解决方案中大约60个项目的C#程序。 我在尝试构建时遇到以下错误: Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed 显然错误是非常自我解释的,我试图让我的整个解决方案以32位模式加载。 我已经完成了每个项目并将目标平台设置为x86,但我仍然遇到此错误。 我搜索过Google并看到了无数不同的方法,但我似乎无法解决这个问题。 确保我的项目在64位计算机上以32位模式运行的最佳方法是什么? 我正在使用Visual Studio 2008.我目前正在考虑降级到32位,但我真的想避免这样做。

在Visual Studio Snippet中插入当前日期时间

有谁知道我可以在visual studio 2008片段中插入当前日期和时间的方式? 我想要的是在我的.snippet文件的主体中这样的东西…… <![CDATA[ // $DateTime$ // more code here for my snippet…

entity framework拆分表删除

我正在使用EF 4 STE来建模一个Attachment对象。 附件包含名称,描述,日期,最重要的是数据( byte[] )。 为了优化加载,我不希望在绝对必要之前检索Data属性,即当用户从客户端单击Download 。 为了遵循这种方法,我使用了这里描述的表拆分技术。 我将附件表拆分为附件 (名称,描述,日期)和附件数据(数据)。 这是我的EF模型中的一对一关系。 一切都很好,直到我尝试删除没有AttachmentData的附件 (即attachment.AttachmentData == null )。 我得到以下exception: 遇到无效数据。 缺少必需的关系。 检查StateEntries以确定约束违规的来源。 我看到了类似的post ,但我似乎无法使用STE和ApplyChanges扩展方法。 现在我的数据访问代码很简单:我调用context的ApplyChanges()然后调用SaveChanges() 。 我尝试了一个简单的删除SQL函数,并将其映射到两个实体,并实际工作; 但它打破了插入物。 我似乎无法将所有属性的插入函数映射到两个实体。 关于我可以尝试的其他一些选择的任何想法? Attachment和AttachmentData之间的关系可以是可选的吗? 当我将它设置为1到0+时,我得到一个映射错误,指出Their primary keys may collide 。 对任何建议开放。 谢谢!

在部分类中设置属性的属性

我有一个由Entity Framework (EF)生成的员工类。 public partial class employee { private string name; public string Name { get{return name;} set{ name = value;} } } 现在我想在name属性中放置一个必需的属性,用于在我编写的另一个员工部分类中进行MVC3validation,以扩展由EF生成的那个,这样我就不必重写我的代码了如果我刷新EF生成的模型。 我写的部分类在同一个程序集和名称空间中。 public partial class employee { // What should I write here to add required attribute in the Name property? }