WebMethod不能在ASP.Net Web角色(Web窗体)中使用?

问题描述:

摄制:WebMethod不能在ASP.Net Web角色(Web窗体)中使用?

  • 打开VS2013,文件>新建 “Azure的云服务” 项目>添加 “ASP.NET Web角色”(命名为WebRole1)
  • 选择 “Web窗体” 模板Web角色。
  • 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类中WebForm1.aspx.cs中

    [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 Form应用程序中,更改任一部分都会导致“错误”!


如果您创建一个空的ASP.NET Web角色,阿贾克斯会成功!到底是怎么回事?

+0

您是否已通过将页面方法设置为true来启用页面方法? – 2015-04-02 09:51:34

JavaScriptSerializer是非常灵活的,但它可能是值得的数据参数,试图有效的JSON,如:

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

相信JSS会处理在单引号键/值,尽管这不是技术上有效的JSON ,但没有引用a可能有点多。