0

我正在为我的第一个 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";
    }

}
4

1 回答 1

1

你要么没有尝试编译你的代码,要么没有把你的实际代码放在这里

[WebMethod]
public string HelloWorld(string name) { //<--- you forget method param name to specify
    return "Hello World";
}

因此,要么删除参数( ie public string HelloWorld()),要么添加我在代码中显示的名称。

此外,由于您没有任何参数,您可以将服务方法的 url 放在浏览器中,看看会发生什么。即转到http://localhost/yourapp/WebService/WebService.asmx/HelloWorld,或任何真实的 URL

于 2013-04-11T12:03:23.360 回答