我正在为我的第一个 WebService 苦苦挣扎,所以我决定将所有内容都简化为基础。还是行不通。
我创建了一个全新的 ASP.NET 网站项目。
我添加了一个名为 WebService 的文件夹。在 WebService 文件夹中,我使用 ASP.NET 模板添加了一个新的 WebService。我只修改了模板以取消注释 [System.Web.Script.Services.ScriptService]。
在 Default.aspx 页面中,在“欢迎使用 ASP.NET”之后,我添加了一个面板,如下所示:
<asp:Panel ID="Panel1" runat="server" Height="200px" Width="200px" BackColor="Blue" onclick="HelloWorld();">
</asp:Panel>
我还将以下脚本添加到 HeaderContent 区域:
<script type="text/javascript" language="Javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
function OnSuccessCall(response) {
alert("Success! : " + response);
}
function OnErrorCall(response) {
alert(response.status + " " + response.statusText);
}
function HelloWorld() {
var pageUrl = '<%=ResolveUrl("~/WebService/WebService.asmx")%>'
$.ajax({
url: pageUrl + "/HelloWorld",
success: OnSuccessCall,
error: OnErrorCall
});
}
</script>
当我运行此代码时,我收到错误 500。我错过了什么?
// - - - - - - - - - - - - - - - - 更新 - - - - - - - - ------------------------------
啊!新线索!如果将 WebMethod 移动到 Default.aspx 的代码隐藏中,而不是作为 WebService 类的一部分,而只是作为具有 [WebMethod] 属性的方法,则它可以工作。(至少我可以使用我的 OnSuccess 函数)。但是,如果我再添加
contentType: "application/json; charset=utf-8",
dataType: "json",
对于 $.ajax() 调用,我又回到了错误 500(尽管可能是出于不同的原因)。是否有一些我缺少 JSON 或其他东西的安装部分?
// - - - - - - - - - - - - - - - - 更新 - - - - - - - - ------------------------------ 这是实际的WebService。正如我之前所说,这正是您在创建新项目并选择 Web 服务时所得到的。
如果有人能告诉我这对他们有用,那么我可以专注于环境问题。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
/// <summary>
/// Summary description for WebService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {
public WebService () {
//Uncomment the following line if using designed components
//InitializeComponent();
}
[WebMethod]
public string HelloWorld( ) {
return "Hello World";
}
}