ajax调用将服务端自定义异常反馈到网页提示,本地测试正常,上传阿里云服务器后却是服务器内部异常(500码),这是怎么回事?

圣殿骑士18 圣殿骑士18 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
ajax调用将服务端自定义异常反馈到网页提示,本地测试正常,上传阿里云服务器后却是服务器内部异常(500码)。
我的异常处理机制是这样:
我在程序中的错误,全部是使用异常机制,而不是方法的返回值。然后在异常独立特性中处理。
本地IIS调试完全正常,发布到服务器发现不行,经过调试仍然找不到原因。

代码过程:
1、抛出异常的代码:

......
//扣减充值记录
var payList = GetRemainAmount(context, wxUser.MemberId);
payList = payList.OrderBy(c => c.PayId).ToList();
var sum = payList.Sum(c => c.Amount - c.UsedAmount);
if (info.Price > sum) throw new ShowErrorException("充值余额不足以支付!");


2、mvc异常处理特性:
public class MvcHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext context)
{
base.OnException(context);
context.ExceptionHandled = true;
ResultType resultType = ResultType.error;
string showMessage = string.Empty;
string errorMessage = string.Empty;

//设置异常类型(影响客户端提示的图标)
if (context.Exception is ShowInfoException)
{
resultType = ResultType.info;
}
else if (context.Exception is ShowWarningException)
{
resultType = ResultType.warning;
}

//异常消息处理
if (context.Exception is ShowException)
{
//代码执行会进入这里:显示类异常:在客户端提示
showMessage = context.Exception.Message;
}
else
{
//其他类Exception:优化并记录日志,和本问题无关,代码不进入此处
......
}

context.HttpContext.Response.StatusCode = 200; //发现问题后期补救的措施,想将500错误改为200,无效果
context.Result = new ContentResult { Content = new AjaxResult { state = resultType.ToString(), message = showMessage }.ToJson() };
}
}


3、网页端:
$.confirm({
title: '',
text: '是否确定支付'+price+"个xx币以查看联系方式?",
onOK: function () {
$.ajaxEx({
url: "/Info/Item/PayAndView",
type: "post",
param: { id: infoId },
success: function (data) {
self.infoForm.Person(data.Person);
self.infoForm.Phone(data.Phone);
self.infoForm.AmountTag(data.AmountTag);
self.enablePayBtn(false);
}
});
}
});

其中,ajaxEx,只做了简单封装:
$.ajaxEx = function (options) {
var defaults = {
url: "",
param: [],
type: "get",
async: false,
beforeSend: null,
complete: null
};
var options = $.extend(defaults, options);
if (options.url == "") return;
if (options.type == "post") {
if ($('[name=__RequestVerificationToken]').length > 0) {
options.param["__RequestVerificationToken"] = $('[name=__RequestVerificationToken]').val();
}
}
$.ajax({
url: options.url,
data: options.param,
type: options.type,
dataType: "json",
async: options.async,
success: function (data) {
if (!data.state) { //返回的是Json格式结果集,一般是get操作
if (options.success) options.success(data);
} else { //返回AjaxResult格式的json状态数据,一般是post操作
if (data.state == "success") {
if (options.success) options.success(data);
} else {
$.alert(data.message, "错误");
}
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$.alert(errorThrown, "错误");
},
beforeSend: function () {
if (options.beforeSend) options.beforeSend();
},
complete: function () {
if (options.complete) options.complete();
}
});
}


百度过,有人说是文件夹权限问题,但我的情况是只是抛出一个异常,完全没有涉及文件操作。
请高手指教。

...全文

相关推荐

评论 11
收藏 已收藏
分享
返回顶部
圣殿骑士18
.NET社区 62,274 成员 668,968 内容