如何在Umbraco中编写Web服务?

时间:2013-10-09 07:29:31

标签: asp.net web-services webforms asp.net-ajax umbraco

我在我的项目中写了一个提交表单的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'失败了。”

请帮助我。

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

WebMethods不能在用户控件中。我建议使用webservice(.asmx)并将你的webmethod放在那里。

答案 2 :(得分:0)

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