【问题标题】:WebMethod not working in ASP.Net Web Role (Web Forms)?WebMethod 在 ASP.Net Web 角色(Web 窗体)中不起作用?
【发布时间】:2015-06-07 01:15:56
【问题描述】:

复制:

  • 打开VS2013,文件>新建“Azure云服务”项目>添加“ASP.NET Web角色”(命名为WebRole1)
  • 为网络角色选择“网络表单”模板。
  • jquery-1.11.1.min.js 和一个新的WebForm1.aspx 添加到WebRole1 项目中。
  • 将以下代码添加到WebForm1.aspx中

    <script src="jquery-1.11.1.min.js"></script>
    <script>
    $(function() {
        $.ajax({
            type: "POST",
            url: "WebForm1.aspx/Foo",
            beforeSend: function (xhr) {
                xhr.setRequestHeader("Content-type",
                                     "application/json; charset=utf-8");
            },
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: "{a: 'webmethod!'}",
            success: function(data) {
                alert(data.d);
            },
            error: function() {
                alert("error");
            }
        });
    });
    

  • 在WebForm1.aspx.cs中的WebForm1类中添加如下函数

    [WebMethod()]
    public static string Foo(string a)
    {
        return a;
    }
    
  • 将 WebRole1 项目设置为启动项目并运行。浏览器提示“未定义”。

但是你可以得到“webmethod!”使用普通的 ASP.NET WebForm 项目。怎么了?


我注意到在url: "WebForm1.aspx/Foo":如果你改变aspx部分,ajax会失败;如果您将 Foo 部分更改为任何值,则 ajax 总是会成功。这很不寻常!在普通的 ASP.NET Web 窗体应用程序中,更改任一部分都会导致“错误”!


如果你创建一个Empty ASP.NET Web Role,ajax 会成功!!!怎么回事?

【问题讨论】:

  • 您是否在页面级别启用了页面方法,通过使其成为真的?

标签: javascript asp.net ajax azure webmethod


【解决方案1】:

JavaScriptSerializer 非常灵活,但可能值得在 data 参数中尝试有效的 JSON,例如:

data: '{"a": "webmethod!"}'

我相信 JSS 将处理单引号中的键/值,即使这在技术上不是有效的 JSON,但未引用的 a 可能有点多。

【讨论】:

    猜你喜欢
    • 2021-01-31
    • 2017-05-04
    • 2015-11-19
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多