Вызов службы asmx из JavaScript - PullRequest
2 голосов
/ 27 февраля 2012

У меня есть следующий сервис 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 DinnerService : System.Web.Services.WebService
    {
        List<Dinner> dinners;
        public DinnerService()
        {
            dinners = new List<Dinner>();
        }

        [WebMethod]
        [ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
        public Dinner HelloWorld()
        {
            var dinner = new Dinner { DinnerID = 1, Host = "Ahsan", RSVP = "Some People", Venue = "Lahore" };
            return dinner;
        }
}

и я вызываю его из jQuery для события загрузки страницы веб-формы следующим образом

    $(function () {
                $.ajax({
                    type: 'post',
                    url: 'http://localhost:1901/DinnerService.asmx/HelloWorld',
                    dataType: 'json',
                    data:{},
                    contentType: "application/json; charset=utf-8",
                    success: function (data) {
                        $('#res').html(data.d.DinnerID);
                        alert(data.d.Host);
                    }
                });
});

Он отлично работает в IE, но в Firefox и Chrome показывает внутреннюю ошибку сервера, а ответ выглядит так:

Request format is unrecognized for URL unexpectedly ending in '/HelloWorld'

Это очень странно для меня, почему он работает на одном браузере, а не на других. Я использую Visual Studio 2010 и .NET 3.5 для службы. Переход к WCF для этого конкретного случая не вариант. Ответ в Интернете не мог помочь мне решить проблему. Что именно здесь происходит?

1 Ответ

1 голос
/ 19 мая 2014

Следующая настройка для вашего файла web.config решит проблему. См. Сообщение follownig .

<configuration>
    <system.web>
    <webServices>
        <protocols>
            <add name="HttpGet"/>
            <add name="HttpPost"/>
        </protocols>
    </webServices>
    </system.web>
</configuration>
...