Ajax 错误消息替换为 500 内部服务器错误

问题描述 投票:0回答:1

我使用 ajax() 调用了 ASP.net 4.0 Web 服务。我可以在本地获取错误消息,但是当我部署到服务器时,该错误被 500 内部服务器错误替换,并显示消息“处理请求时出错。”。我的代码如下所示。请帮忙。

$.ajax({
    type: 'POST',
    url: '../WebServices/UpdateData.asmx/UpdateSomething',
    data: "{ 'id': 100, 'something': 'Some text'} "
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
        //--Do something
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.responseJSON.Message || xhr.statusText);
    }});


[WebMethod]
public string UpdateSomething(int id, string something){
  ....
  throw new ApplicationException("My error message");
}
c# asp.net .net ajax
1个回答
0
投票

你确定带“..”往下一文件夹的路径名正确吗?

如果您向上移动 2 个文件夹,或者说已经向下移动到根级别,会发生什么情况?

“解析”不同可能路径名的一种好方法是用服务器端表达式替换硬编码路径名,该表达式始终解析为从根文件夹开始的正确路径名。通常,当您部署时,您可能会说部署到生产 Web 服务器上的子文件夹,因此您的路径名可能会变得不同。另一个问题是当您使用母版页或使用来自不同网页位置的示例代码时会发生什么。除非您 100% 确定现有代码始终运行 asmx 页面上一个文件夹,否则此类调用在发布后通常会失败,因为您的文件夹设置会发生一些变化。

一旦您更改位置,或发布到服务器上的额外文件夹,您的硬编码路径名就会被破坏。

因此,我建议采用服务器端 URL 表达式。

因此,试试这个:

url: '<%= ResolveUrl("~/WebServices/UpdateData.asmx/UpdateSomething") %>',

因此,上述内容都将起作用,并且无论您将生产网站发布到服务器的位置或嵌套如何,都将起作用。如果您碰巧移动了页面,或者您使用了母版页,那么它也将起作用,并且子页面的嵌套可能与母版页嵌套不同。

服务器端“~/”从已发布应用程序位置的根目录开始,JavaScript 中不支持使用“~”,但它肯定适用于服务器端表达式。

因此,尝试上面的方法,它应该可以解决此类路径问题。

© www.soinside.com 2019 - 2024. All rights reserved.