小编use*_*789的帖子

ASP.NET MVC中的全局错误处理(控制器外部)

假设我将以下代码放在ASP.NET MVC站点的Master页面中:

throw new ApplicationException("TEST");
Run Code Online (Sandbox Code Playgroud)

即使我的控制器上放置了[HandleError]属性,此异常仍会冒泡.我该如何处理这样的错误?我希望能够路由到错误页面,仍然能够记录异常详细信息.

处理这类事情的最佳方法是什么?

编辑:我正在考虑的一个解决方案是添加一个新的控制器:UnhandledErrorController.我可以在Global.asax中放入Application_Error方法,然后重定向到此控制器(它决定如何处理异常)?

注意:customErrors web.config元素中的defaultRedirect不传递异常信息.

error-handling asp.net-mvc

7
推荐指数
3
解决办法
6320
查看次数

您可以使用C#new关键字来扩展接口的属性吗?

我理解"new"关键字如何隐藏派生类中的方法.但是,它对实现使用关键字的接口的类有什么影响?

考虑这个例子,我决定通过使其属性读/写来扩展接口.

public interface IReadOnly {

   string Id {
      get;
   }
}

public interface ICanReadAndWrite : IReadOnly  {

   new string Id {
      get;
      set;
   }
}
Run Code Online (Sandbox Code Playgroud)

然后你就可以做到这样的事情:

public IReadOnly SomeMethod() {
   // return an instance of ICanReadAndWrite
}
Run Code Online (Sandbox Code Playgroud)

这是不好的设计吗?它会导致我的类实现ICanReadAndWrite的问题吗?

编辑: 这是一个人为的例子,说明为什么要这样做:

假设我有一个返回IShoppingCartItemReadWrite的工厂类.然后,我可以有一个服务层来操作它的价格,更改东西等.然后,我可以将这些对象作为IShoppingCartItemReadOnly传递给某种不会改变它们的表示层.(是的,我知道它在技术上可以改变它们 - 这是一个设计问题,而不是安全性等)

c# interface new-operator

6
推荐指数
2
解决办法
4597
查看次数