как вызвать веб-сервис из другого пространства имен в .net - PullRequest
0 голосов
/ 12 октября 2011

Хорошо, я немного рассол здесь.

Когда я пытаюсь вызвать веб-сервис со страницы, которая принадлежит myproject.account.members namespace

веб-сервису, который принадлежит myproject.services Я получаю ошибку

/// ----- изменено: добавлено сообщение об ошибке ----- ///

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

например.

Ajax-вызов jquery из somepage.aspx , который принадлежит 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";
        }
    }
}

Обычно, если я изменяю пространство имен моего веб-сервиса с myproject.Services на myproject.account.member , это работает, если я вызываю его со страницы, которая принадлежит myproject.account.members пространство имен ... но оно не будет работать, если установить для пространства имен myproject.Services

пожалуйста, помогите .. как мне обойти это? Что если я хочу вызвать один и тот же сервис из нескольких разных пространств имен в моем проекте? `введите код здесь

1 Ответ

0 голосов
/ 12 октября 2011

Когда вы изменили пространство имен кода, стоящего за классом веб-службы, не забудьте также изменить его в разметке (productService.asmx):

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

Также замените:

data: ''

с:

data: '{}'

И чтобы получить более содержательное сообщение об ошибке, чем сообщение, которое вы отправили в своем вопросе, используйте инструменты FireBug или Chrome Developer, чтобы увидеть точный запрос AJAX, который был отправлен. Вы увидите запрос и ответ от сервера. Это поможет вам лучше понять, что не так с вашим кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...