相关疑难解决方法(0)

如何在Ajax(Post)请求期间抛出自定义http状态代码

我需要抛出HttpException期间AjaxRequestControllerCustomFilterAttribute

当我把ExceptionController403错误

[HttpPost]
[CustomAuthorize]
public ActionResult AjaxSelectBinding()
{
     // 403 Error code
     throw new HttpException((int)HttpStatusCode.Forbidden, "Forbidden");
}
Run Code Online (Sandbox Code Playgroud)

在客户端脚本中,我总是得到结果代码 - 500

 $.ajax({
            type: 'POST',
            url: '/Groups/AjaxSelectBinding',
            success: function(data) {
            },
            error: function (xhr, ajaxOptions, thrownError) {
                 // HERE I GET ALWAYS 500 ERROR CODE
            }
        });
Run Code Online (Sandbox Code Playgroud)

我怎么能扔HttpException在我FilterAttribute和获得客户端页面的代码.我尝试这样做,但我得到200状态代码:

public class CustomAuthorize : AuthorizeAttribute
{
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        base.OnAuthorization(filterContext);

        SharedControllerBase ctrl …
Run Code Online (Sandbox Code Playgroud)

javascript c# ajax asp.net-mvc

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

如何在ASP.NET MVC 3中创建自定义404错误页面?

在ASP.NET MVC 3中创建自定义错误页面的最佳方法是什么?我特别感兴趣的是404错误,但也有403错误.我是MVC框架的新手,传统上我来自PHP背景,但我正在快速学习.

我在发布此问题之前做了我的研究,并发现了这个链接: asp.net MVC3上的自定义错误页面

这个解决方案看起来很简单虽然当我尝试在我的机器上实现它时,我遇到了以下问题:IController errorsController = new ErrorsController(); 在Application_Error()函数内部.它说"无法找到类型或命名空间名称'ErrorsController'(您是否缺少using指令或程序集引用?").

提前感谢您提供的帮助.

error-handling asp.net-mvc http-status-code-404

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

MVC3自定义错误页面给出空白结果

使用博客张贴在这里和一个主题在这里,所以我已经创建了一个控制器,它应该处理我所有的错误页面.

在我的Global.asax.cs中,我得到了以下代码:

protected void Application_Error()
        {
            var exception = Server.GetLastError();
            var httpException = exception as HttpException;
            var routeData = new RouteData();

            Response.Clear();
            Server.ClearError();

            routeData.Values["controller"] = "Error";
            routeData.Values["action"] = "General";
            routeData.Values["exception"] = exception;
            Response.StatusCode = 500;

            if (httpException != null)
            {
                Response.StatusCode = httpException.GetHttpCode();
                switch (Response.StatusCode)
                {
                    case 403:
                        routeData.Values["action"] = "Http403";
                        break;
                    case 404:
                        routeData.Values["action"] = "Http404";
                        break;
                }
            }

            // Avoid IIS7 getting in the middle
            Response.TrySkipIisCustomErrors = true;
            IController errorsController = new ErrorController();
            HttpContextWrapper …
Run Code Online (Sandbox Code Playgroud)

error-handling asp.net-mvc-3

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

如何捕获HttpRequestValidationException

当发生HttpRequestValidationException时,如何将用户重定向到自定义错误页面.我试图在我的basecontroller中捕获它:

protected override void OnException(ExceptionContext exceptionContext)
    {
      if (exceptionContext.Exception is HttpRequestValidationException)
        {
          this.View("CustomError").ExecuteResult(this.ControllerContext);
        }
    }
Run Code Online (Sandbox Code Playgroud)

但我仍然得到例外:从客户端检测到一个潜在危险的request.form值

c#-4.0 asp.net-mvc-4

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

如何避免在控制器中使用try ... catch?

我尝试在应用程序的较低层处理我的异常,因为它们可以被处理(记录它们).但是,有一些错误会导致应用程序崩溃,就像参数是NULL一样,并且在这种情况下不应该抛出ArgumentNullException.

如果考虑调用服务层的控制器层.我想避免服务层抛出异常,因为我想在这里处理所有这些(日志记录),但我觉得在这种情况下这是不可能的(如NULL情况).

那么避免在控制器中使用try ... catch的最佳方法是什么?或者我应该在控制器中使用try ... catch?

try-catch asp.net-mvc-3

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

覆盖ASP.NET MVC中的`HandleErrorAttribute`

我想覆盖HandleErrorAttribute一个名为类似的新版本HandleErrorsWithLogging.本质上,我希望它将未处理的异常记录到我的日志文件中,然后继续执行典型的" 重定向到〜/共享/错误 "功能HandleError.

我已经HandleError在我的所有行动中添加了global.asax

这是最好的方法还是有一些更简单的方法来获取对日志记录的未处理异常的访问权限?我还有关于Error视图本身的Ajax调用.

error-handling asp.net-mvc logging

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

自定义HandleErrorAttribute的错误不起作用

我已经阅读了很多文章和几篇文章(包括这里的stackoverflow),但不知道我做错了什么.

这是我的代码:

的Global.asax.cs

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
}
Run Code Online (Sandbox Code Playgroud)

ErrorControler.cs

public class ErrorController : Controller
{
    public ActionResult Error404()
    {
        return View();
    }

    public ActionResult Error500()
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

Web.config文件

<customErrors mode="On" defaultRedirect="~/Error/Error500">
  <error statusCode="404" redirect="~/Error/Error404"/>
</customErrors>
Run Code Online (Sandbox Code Playgroud)

MyController.cs

public ActionResult Index()
{
    using (var db = new DataContext())
    {
        int a = 2, b = 0;
        var r = a / b;
        return View(r);
    }
}
Run Code Online (Sandbox Code Playgroud)

Error500.cshtml

@model System.Web.Mvc.HandleErrorInfo
@{
    ViewBag.Title = "Erro";
}

<h2>@ViewBag.Title</h2> …
Run Code Online (Sandbox Code Playgroud)

error-handling razor asp.net-mvc-3

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

显示从控制器类到查看页面的异常消息

我在我的MVC3 Razor项目的HomeController.cs中的try catch块中定义了一个方法.现在请告诉我如何在我的视图页面上显示此异常消息?

asp.net-mvc-3

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

如何从ASP.NET MVC中的HttpModule执行控制器操作?

我有以下内容IHttpModule,我正在试图弄清楚如何从控制器为给定的绝对或相对URL执行操作.

public class CustomErrorHandlingModule : IHttpModule
{
    #region Implementation of IHttpModule

    public void Init(HttpApplication context)
    {
        context.Error += (sender, e) => 
            OnError(new HttpContextWrapper(((HttpApplication)sender).Context));
    }

    public void Dispose()
    {}

    public void OnError(HttpContextBase context)
    {
        // Determine error resource to display, based on HttpStatus code, etc.
        // For brevity, i'll hardcode it for this SO question.
        const string errorPage = @"/Error/NotFound";

        // Now somehow execute the correct controller for that route.
        // Return the html response.
    }
}
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?

.net c# asp.net-mvc httpmodule

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