Asp.net 全局处理http 404未找到错误的不同响应;对于Ajax&;非Ajax请求
我需要处理asp.net mvc web应用程序中的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
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();
});