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角色,阿贾克斯会成功!到底是怎么回事?
答
JavaScriptSerializer是非常灵活的,但它可能是值得的数据参数,试图有效的JSON,如:
data: '{"a": "webmethod!"}'
相信JSS会处理在单引号键/值,尽管这不是技术上有效的JSON ,但没有引用a
可能有点多。
您是否已通过将页面方法设置为true来启用页面方法? – 2015-04-02 09:51:34