小编Rob*_*est的帖子

SQL Server在select/update或多个选择之间发生死锁

所有关于SQL Server死锁的文档都讨论了操作1锁定资源A然后尝试访问资源B并且操作2锁定资源B并尝试访问资源A的情况.

但是,我常常在一些繁忙的应用程序中看到select和更新之间甚至多个选择之间的死锁.我发现死锁跟踪输出的一些细节非常难以理解但我真的只想了解什么可能导致两个单独操作之间的死锁.当然,如果一个选择具有读锁定,则更新应该在获得独占锁之前等待,反之亦然?

这种情况发生在SQL Server 2005上,而不是我认为这会产生影响.

sql-server deadlock sql-server-2005

37
推荐指数
6
解决办法
5万
查看次数

如何在服务停止时停止多线程Windows服务中的工作线程

我有一个Windows服务,它使用生产者/消费者队列模型,多个工作线程处理队列中的任务.这些任务可以运行很长时间,如果不是几小时,则按很多分钟的顺序运行,并且不涉及循环.

我的问题是关于处理服务停止以在这些工作线程上优雅地结束处理的最佳方法.我在另一个SO问题中读到,使用thread.Abort()是设计不良的标志,但似乎服务OnStop()方法在服务终止之前只有有限的时间完成.我可以在catchA中为ThreadAbortException做足够的清理(没有不一致状态的危险)所以在工作线程上调用thread.Abort()对我来说似乎没问题.是吗?有哪些替代方案?

.net multithreading windows-services

10
推荐指数
2
解决办法
9205
查看次数

WebInvoke属性是否可以由绑定配置替换

为了使WCF服务与JQuery一起使用,我在操作契约上添加了一个WebInvoke属性来控制JSON序列化,如下所示:

[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
Run Code Online (Sandbox Code Playgroud)

有没有办法通过配置中的服务绑定来控制此序列化,因为它限制了此服务向不同端点提供不同的序列化.

.net wcf wcf-binding

6
推荐指数
1
解决办法
1702
查看次数

如何在ASP.NET MVC中控制部分视图的条件显示

在我们的标准Web表单ASP.NET解决方案中,我们通常在母版页中具有一系列用户控件,并确定它们是否在其代码中显示.ASP.NET MVC中实现相同目标的最佳方法是什么?

显然,你可以将if语句放在母版页或局部视图中,但这样会让我感到麻烦,并打破了将业务逻辑排除在视图之外的原则.它还需要将必要的信息放入所有视图模型中,或者从基本控制器继承,这对于如此简单的事情似乎很麻烦.

我正在考虑使用RenderAction并返回一个完全空白的视图以防止任何输出 - 这是一个好的模式吗?

asp.net-mvc

6
推荐指数
1
解决办法
4066
查看次数

如何在ASP.NET MVC控制器工厂中处理异常

我有一个带有自定义StructureMap控制器工厂的ASP.NET MVC 2应用程序来处理我的控制器的依赖注入:

public class StructureMapControllerFactory : DefaultControllerFactory
{
    public override IController CreateController(RequestContext context, string controllerName)
    {
        Type controllerType = base.GetControllerType(context, controllerName);
        return ObjectFactory.GetInstance(controllerType) as IController;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何在这个控制器工厂中处理异常,以便它们可以像在具有HandleError属性的控制器中一样重定向到〜/ Views/Shared/Error.aspx.尽管将CustomErrors属性设置为"On",但目前异常不会执行此操作.

目前我可以使用像"〜/ DoesNotExist/edit/1"这样的URL生成这样的异常.使用默认路由:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Run Code Online (Sandbox Code Playgroud)

MVC匹配此路由并将控制器名称"DoesNotExist"传递给我的控制器工厂.GetControllerType然后返回null并在对StructureMap的调用中导致空引用异常.然后我希望能够处理这个异常.

请注意,添加后续捕获所有路由将无法解决此问题 - MVC匹配默认路由.

我知道我可以通过在控制器的默认路由上设置约束来解决这个特殊问题,但问题是如何在工厂中使用普通的MVC~/Views/Shared/Error.aspx.

请注意,我不希望答案要求将控制器工厂紧密耦合到特定的MVC应用程序.理想情况下,此工厂应位于不在同一解决方案中的引用程序集中.

asp.net-mvc factory exception-handling

6
推荐指数
1
解决办法
1955
查看次数

ASP.NET Web API,Web服务发现和客户端创建

我找不到有关ASP.NET Web API的服务发现实现的任何信息.对于一个新项目,我需要在WCF和Web API之间做出决定.service元素将被各种客户端,移动,客户端JavaScript以及ASP.NET网站使用.

对于网站而言,能够针对WCF服务生成客户端的便利性显然是一个优势.我不熟悉RESTful Web服务,但我发现有Web应用程序描述语言(WADL).也许这是我的无知,但能够宣传正确的方式来消费你的服务肯定是一件好事吗?

我的主要问题是:是否存在为WEB API生成WADL或类似内容的任何内容?

次要问题:这个工具看起来像是基于WADL生成一个客户端,还有什么能让生活更轻松地让客户端与RESTful Web服务保持同步?

asp.net rest asp.net-mvc web-services asp.net-web-api

6
推荐指数
1
解决办法
7942
查看次数

你如何处理C#的新功能,以便它们不会导致代码写得不好?

C#3.0中引入了许多让我感到不安的功能,例如对象初始化器,扩展方法和隐式类型变量.现在在C#4.0中使用动态关键字之类的东西我会更加关注.

我知道每个功能的CAN以适当的方式使用在我看来,它们使开发人员更容易做出错误的编码判决,因此写信更差的代码.在我看来,微软正试图通过简化编码而不是要求来赢得市场份额.就个人而言,我更喜欢一种严谨的语言,对我的编码标准提出更高的要求,并迫使我以OOP的方式构建事物.

以下是我对上述功能的一些关注示例:

对象构造函数可以执行未向使用者公开的重要逻辑.这是对象开发人员的控制.对象初始化程序将此控制权移除,并允许使用者决定要初始化哪些字段.

编辑:我没有意识到你可以混合构造函数和初始化程序(我的坏)但这开始看起来很麻烦,所以我仍然不相信这是向前迈进的一步.

允许开发人员使用扩展方法扩展内置类型允许所有和各种各样的人开始将他们喜欢的宠物方法添加到字符串类中,这可能最终导致一系列令人眼花缭乱的选项,或者需要更多的编码标准来监管这些方法.

允许隐式类型化变量允许快速和脏的编程,或者正确的OOP方法,这可能很快成为整个应用程序中无法管理的变量.

我的担忧是否合理?

c# coding-style

5
推荐指数
1
解决办法
593
查看次数

在Visual Studio解决方案中引用多个项目中的外部库的最佳方法

我们在VSS源代码控制下有一个Visual Studio 2008解决方案.该解决方案包含许多类库,其中许多需要引用不属于解决方案的程序集.目前,我们在每个项目中保留该程序集的单独副本,但随着项目数量的增加,将更新复制到外部程序集变得越来越繁琐.有没有更好的方法在解决方案和源代码管理中拥有程序集的单个副本,然后可以在所有项目中引用它?

version-control reference visual-studio

5
推荐指数
1
解决办法
3830
查看次数

如何使用ASP.NET MVC 3 RTM配置依赖项注入

我正在将一个Web应用程序从ASP.NET 3 Preview 1升级到RTM,我对更新的依赖注入方法感到困惑.我正在使用StructureMap,但这与我的问题无关.以前我需要做的就是如下:

x.For<IControllerFactory>().Use<DefaultControllerFactory>();
x.For<IServiceLocator>().Use(MvcServiceLocator.Current);
Run Code Online (Sandbox Code Playgroud)

现在看来我需要提供IControllerActivator,IViewPageActivator和ModelMetadataProvider的实现,因为否则我从StructureMap收到错误,因为MVC尝试使用依赖项解析器来定位它们.从MVC源看,似乎没有公共默认实现.我在设置这些内容时遗漏了什么?当然这些应该按惯例配置?

需要配置什么以及如何使用StructureMap的例子.作为参考,我目前使用以下丑陋的kludge迫使MVC使用其内部默认值:

x.For<IControllerFactory>().Use<DefaultControllerFactory>();
x.For<IDependencyResolver>().Use(() => DependencyResolver.Current);                
x.For<IControllerActivator>().Use(() => null);
x.For<IViewPageActivator>().Use(() => null);
x.For<ModelMetadataProvider>().Use(ModelMetadataProviders.Current);
Run Code Online (Sandbox Code Playgroud)

编辑:为了清楚我有一个工作的依赖性解析器的StructureMap实现 - 问题是为什么MVC抱怨所有这些接口没有在容器中配置.

structuremap dependency-injection asp.net-mvc-3

4
推荐指数
1
解决办法
4292
查看次数

群众视频实时对象识别和碰撞检测库或工具建议

我们需要能够从上方(想想火车站)分析人群场景的高清视频,并能够检测所有移动物体并执行碰撞检测.虚拟对象将有效地叠加在图像上,并且必须响应真实对象.这需要实时发生.

理想情况下,我正在寻找一个可以从C#中使用的库来执行此操作.这是我的舒适区域,所以我只是在寻找一些关于这是一个简单或不可行的难题以及哪些工具可以胜任工作的指针.例如OpenCV适用吗?

如果对可处理的对象有多少性能限制,这些会是什么?

c# opencv image-processing collision-detection computer-vision

4
推荐指数
1
解决办法
1508
查看次数

测试C#泛型类型的分配

有没有什么方法可以测试泛型方法中泛型参数的实例是否已分配给它可以是值还是引用类型?我希望能够在一个通用方法中执行此操作,我必须持久化类型,其中T是实例,K是该类型的标识符字段的类型(我持久存在的所有对象都有,因为它们从基类继承类型).我不想将K限制为值类型.代码是这样的:

public static bool Save<T, K>(T instance)
{
    // variable to hold object identifer
    K instanceId = default(K);

    PropertyInfo[] properties = typeof(T).GetProperties();

    // loop through properties of the T
    // if property is decorated with a specific attribute then assign to instanceId
    // end loop

    // check that we have a value assigned to instanceId other than default(K)
    // if not return false otherwise continue to persist item
}
Run Code Online (Sandbox Code Playgroud)

由于K可以是值类型,因此检查它是否等于默认值(K)会导致错误,因为它依赖于它是可比较的.有没有解决的办法?

请注意,在当前情况下,通过在泛型类型T上放置一个必须从基类型BaseObject继承的条件,我已经满足了这个需求,所以我的问题是关于泛型和测试赋值的一般问题.

c# generics

1
推荐指数
1
解决办法
1314
查看次数

为什么移除 async/await 会导致 Task&lt;T&gt; 到 Task&lt;object&gt; 的转换错误

我有以下通用和非通用方法:

public async Task<T> LoadAsync(Guid id)
{
    return await _someService.SomeMethodAsync(id);
}

async Task<object> LoadObjectAsync(Guid id) => await LoadAsync(id);
Run Code Online (Sandbox Code Playgroud)

尝试遵循Stephen Cleary建议,我想通过从LoadObjectAsync方法中删除 async/await 来提高代码效率,因为它是一个传递。但是,当我将签名更改为:

Task<object> LoadObjectAsync(Guid id) => LoadAsync(id);
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息,说我不能隐式地从 转换Task<T>Task<object>。我想知道的是 async await 如何避免这个转换问题?我知道通用差异禁止转换,Task<>但为什么这不适用于 async/await 版本?

c# asynchronous async-await

1
推荐指数
1
解决办法
67
查看次数