如何从.net中的不同命名空间调用webservice

时间:2011-10-12 06:15:36

标签: jquery .net ajax web-services namespaces

好吧,我在这里有点腌渍。

当我尝试从属于 myproject.account.members 命名空间

的网页调用网络服务时

属于 myproject.services 的网络服务我收到错误

/// ----- modified:添加了错误消息----- ///

---------------------------
Message from webpage
---------------------------
responseText=
textStatus=error
errorThrown=Unknown
---------------------------
OK   
---------------------------

例如

来自 somepage.aspx 的jquery ajax调用属于 myproject.account.members

$.ajax({
    type: "POST",
    url: '<%=ResolveUrl("~/Services/productService.asmx/getSomething") %>',
    data: '',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (result){
        alert(result.d)
    },
    error: function(XMLHttpRequest, textStatus, errorThrown){

alert("responseText=" + XMLHttpRequest.responseText + "\ntextStatus=" + textStatus + "\nerrorThrown=" + errorThrown);

    }
});

网络服务代码属于 myproject.Services

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace myproject.Services
{
    /// <summary>
    /// Summary description for productService
    /// </summary>
    [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 productService : System.Web.Services.WebService
    {

        [WebMethod]
        public String getSomething()
        {
            return "Hello World";
        }
    }
}

基本上,如果我将我的webservice的命名空间从 myproject.Services 更改为 myproject.account.member ,如果我从属于myproject.account的页面调用它,它就可以工作.members namespace ...但是如果将命名空间设置为myproject.Services

,它将无法工作

请帮助..我该如何解决这个问题?如果我想从我的项目中的几个不同的命名空间调用相同的服务怎么办?在这里输入代码

1 个答案:

答案 0 :(得分:0)

当您更改Web服务类后面的代码的命名空间时,不要忘记在标记中更改它(productService.asmx):

<%@ WebService 
    Language="C#" 
    CodeBehind="productService.asmx.cs" 
    Class="myproject.Services.productService" %>

同时替换:

data: ''

使用:

data: '{}'

要获得比您在问题中发布的更有意义的错误消息,请使用FireBug或Chrome Developer工具,以查看发送的确切AJAX请求。您将看到来自服务器的请求和响应。它将帮助您更好地了解代码的错误。