ASP.NET Вызов веб-методов внутри веб-службы - внутренняя ошибка сервера - PullRequest
1 голос
/ 13 декабря 2011

У меня есть веб-сервис с именем AEWService.asmx со следующим кодом:

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

namespace editor
{
    [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 AEWService : System.Web.Services.WebService
    {
        [WebMethod]
        public static Dictionary<string, string> TestFunc(string elementToBeModified, string selectedValue)
        {
            Dictionary<string, string> newValues = new Dictionary<string, string>();
            newValues.Add("k1", "val1");
            newValues.Add("k2", "val2");
            return newValues;
        }
    }
}

Когда я вызываю веб-метод с помощью ajax, я получаю ошибку 500 - Неизвестный веб-метод TestFunc.Вызов ajax выглядит следующим образом:

var dataString = JSON.stringify({ 
    "elementToBeModified": "someElement", 
    "selectedValue": "someValue"
});
$.ajax({
  url: 'AEWService.asmx/TestFunc',
  type: "POST",
  data: dataString,
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (data) {
     // do somethig...
  }
});

Я также добавил следующие строки в web.config под тегами (я не уверен, что они имеют в виду, но я надеюсь, что они в порядке):

 <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

Код работал отлично, когда веб-метод был на странице aspx.Что не так с asmx?

Спасибо!

1 Ответ

4 голосов
/ 13 декабря 2011

Невозможно вернуть объект словаря из веб-сервиса.Смотрите этот пост.http://forums.asp.net/t/1370858.aspx/1

Также не помечайте веб-метод как статический.Отметьте здесь Почему статические методы не могут использоваться в качестве операций веб-службы в веб-службах ASMX?

...