我正在努力完成我的第一个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功能OK)。但是,如果我再添加
contentType: "application/json; charset=utf-8",
dataType: "json",
到$ .ajax()调用,我回到了我的错误500(尽管可能是出于不同的原因)。是否有一些我缺少JSON的安装件?
// -------------------------------更新------------- --------------------------------- 这是实际的WebService。正如我之前所说,它正是您在创建New Item并选择Web Service时获得的。
如果有人能告诉我这对他们有用,那么我可以专注于环境问题。
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";
}
}
答案 0 :(得分:1)
你要么没有尝试编译代码,要么没有把你的实际代码放在这里
[WebMethod]
public string HelloWorld(string name) { //<--- you forget method param name to specify
return "Hello World";
}
因此,请删除参数(例如public string HelloWorld()
)或添加我在代码中显示的名称。
此外,由于您没有任何参数,您只需将服务方法的url放在浏览器中,看看会发生什么。即转到http://localhost/yourapp/WebService/WebService.asmx/HelloWorld
,或任何真实的网址