Asp.net 全局处理http 404未找到错误的不同响应;对于Ajax&;非Ajax请求

Asp.net 全局处理http 404未找到错误的不同响应;对于Ajax&;非Ajax请求,asp.net,ajax,asp.net-mvc,asp.net-mvc-5,web-config,Asp.net,Ajax,Asp.net Mvc,Asp.net Mvc 5,Web Config,我需要处理asp.net mvc web应用程序中的http 404错误。对于ajax请求,将显示警报,而对于非ajax请求,将重定向到操作方法。例如,其中一个操作方法如下所示:- public async Task<ActionResult> Delete(int? id) { var link= await unitofwork.SkillRepository.FindLinkToKB(id.Value); if (link == n

我需要处理asp.net mvc web应用程序中的http 404错误。对于ajax请求,将显示警报,而对于非ajax请求,将重定向到操作方法。例如,其中一个操作方法如下所示:-

public async Task<ActionResult> Delete(int? id)
      {

      var link=     await unitofwork.SkillRepository.FindLinkToKB(id.Value);
      if (link == null)
              {
                  return new HttpStatusCodeResult(404, "The link has already been deleted.");
              }
但我面临的问题是,当ajax和非ajax请求出现404错误时,我总是被重定向到
“/Home/Error”
操作方法,因此ajax设置似乎会被忽略。那么,如何根据请求类型(如果是ajax或非ajax请求)对http 404错误做出不同的响应呢


谢谢

可能在web.config中删除重定向,并在控制器/操作中处理它,例如(伪代码),如果HttpStatus=404,则重定向到/Home/Error。因此,我需要在哪里添加检查“如果HttpStatus=404,则重定向到/Home/Error”?再次查看您的操作,您似乎已经检查了链接是否为空,因此您可以不返回HttpStatus而将其发送到错误页面。是的,但我正在寻找一种更标准的方法来处理错误。。。不确定这是否可以实现……也不确定,因为404已经在您的配置中进行了全局处理,我不知道如何用AJAX调用覆盖它。我会向上投票,也许有比我更有经验的人会过来提供更多的帮助。
<system.webServer>
    <modules>
      <remove name="FormsAuthenticationModule" />
    </modules>
    <httpErrors errorMode="Custom">
      <remove statusCode="404"/>
      <error path="/Home/Error" statusCode="404" responseMode="Redirect"/>
    </httpErrors>
  </system.webServer>
$(document).ready(function () {
    $(document).ajaxError(function (e, xhr, textStatus, errorThrown) {
        if (xhr.status == 401)
            window.location = "/Account/Login";
        else if (xhr.status == 403 || xhr.status == 404)
            alert(xhr.statusText, 'Error');

        $(".loadingimage").hide();
    });