我无法让我的WebMethod在ASP.NET中工作

时间:2014-05-14 23:55:10

标签: c# jquery asp.net ajax webmethod

我目前正在C#中创建一个网页作为学校项目。 我在文件中创建了一个WebMethod:

Default.aspx.cs

        [WebMethod]
    public static string MyWebMethod()
    {
        return string.Format("Hello From Server");
    }

文件中的Ajax调用:

Default.aspx的

    <script type="text/javascript">
    function test() {
        jQuery.ajax({
            type: "POST",
            url: "Default.aspx/MyWebMethod",
            data: {},
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(dd, status) {
                alert('Success' + JSON.stringify(dd) + " status: " + JSON.stringify(status));
            },
            error: function(dd) {
                alert('There is error' + dd.responseText);
            }
        });
    }
</script>
<input type="button" value="click me" onclick="test();" />

我在“MyWebMethod()”的开头插入了一个断点,但是当我调试时,断点永远不会被击中。

我现在已经和这个问题坐了大约4.5个小时,尝试了我在谷歌上找到的每一个例子,即使我下载了一个完整的例子即。 “Default.aspx”和“Default.aspx.cs”文件带有“工作”代码,我无法让它在我的解决方案中运行。

您是否需要启用某些设置才能使用JQuery,Ajax和WebMethods?

在我放入JSON.stringify(dd)之后,我能够收到错误消息:

json:{"Message":"Authentication failed.","StackTrace":null,"ExceptionType":"System.InvalidOperationException"}

但是在寻找几个小时的解决方案后,我几乎放弃了。 当我尝试修复时,显然已经为其他人设置了该错误,它仍然不适用于我。

有谁知道如何使这项工作?

感谢您的时间

3 个答案:

答案 0 :(得分:1)

你应该改变你的jquery ajax的url路径:

url: "Default.aspx/MyWebMethod",

您无需向其添加.aspx,只需添加到页面。

答案 1 :(得分:0)

假设您的方法是在Default.aspx文件的代码隐藏中定义的,位于名为"Views"的文件夹中,那么您的网址应该是这样的:

url: "/Views/Default.aspx/MyWebMethod",

答案 2 :(得分:-1)

注释掉App_Start文件夹的Routeconfig中的AutoRedirectMode将解决此问题

// settings.AutoRedirectMode = RedirectMode.Permanent;