0

我在我的项目中编写了一个用于提交表单的 Web 服务,但它不起作用。我用过 Umbraco CMS 6.1.5。

说明:

我在Master.master中写道:

<form id="AbniyehMainForm" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"
            EnablePageMethods="true" ScriptMode="Auto">
            <Services>
                <asp:ServiceReference Path="~/Services/ApplicationFormService.asmx" />
            </Services>
            <Scripts>
                <asp:ScriptReference Path="/scripts/building.js" />
            </Scripts>
        </asp:ScriptManager>
</form>

我在ApplicationFormService.asmx中写道:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 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 ApplicationFormService : System.Web.Services.WebService
{
    [WebMethod]
    [ScriptMethod(UseHttpGet = true)]
    public string HelloWorld()
    {
        return "Hello World";
    }
}

我在ApplicationFormControl.ascx.cs中写道:

[WebMethod]
    [System.Web.Script.Services.ScriptMethod(UseHttpGet = true)]
    public static void HelloWorld()
    {
        ApplicationFormService s = new ApplicationFormService();
        s.HelloWorld();
    }

我在default.aspx中写道:

<%@ Import Namespace="System.Web.Services" %>
<%@ Import Namespace="Defraz.Building.WebApp.Services" %>

<script runat="server" type="text/C#" language="c#">
[WebMethod]
[System.Web.Script.Services.ScriptMethod()]
public static string HelloWorld()
{
    return "HelloWorld!!!";
}
</script>

我在Building.js中写道:

function btnSendApplicationForm_onclick() {
     PageMethods.HelloWorld(_onMethodComplete, _onMethodError);
}

function _onMethodComplete(result) {
    alert(result.message);
}

function _onMethodError(result) {
    alert(result._message);
}

当代码运行 PageMethods.HelloWorld(_onMethodComplete, _onMethodError) 时,我收到一个错误表单 _onMethodError 告诉我

“服务器方法‘HelloWorld’失败。”

请帮我。

4

3 回答 3

2

由于您使用的是 v6.x,您可以使用 Umbraco WebAPI 实现吗?因此,不要创建 Web 服务,而是按照本文创建 WebAPI 控制器/操作:http: //our.umbraco.org/documentation/Reference/WebApi/

这样做的好处是您可以直接从控制器访问所有 Umbraco 上下文和服务。

显然,这意味着您不一定会从中受益,webmethod但如果您返回 json 并将其反序列化为您可以使用的强类型,您仍然可以在其中完成大部分工作。

于 2013-10-09T09:38:40.453 回答
0

我认为您不会在 Umbraco 中编写 Web 服务——听起来您正试图与 Umbraco 共同定位一个。为什么不向现有 Web 服务添加服务引用?或者,在您的 Umbraco 解决方案中包含 WebApi 库并进行 Restful 调用。

于 2013-10-15T06:50:43.237 回答
0

WebMethods 不能在用户控件中。我建议使用网络服务(.asmx)并将您的网络方法放在那里。

于 2013-10-09T08:28:13.813 回答