Подтвердить что ты не робот

Как исправить ошибку "Запрос формата непризнанной для URL..." в веб-службе, работающей в IIS?

При запуске веб-службы в IIS появляется следующая ошибка:

Ошибка сервера в папке "/Входящие" Заявка. Формат запроса непризнанный для URL неожиданно заканчивается на '/GetMailsInfo'. Описание: Необработанное исключение произошли во время выполнения текущий веб-запрос. Пожалуйста, просмотрите трассировки стека для получения дополнительной информации о ошибка и где она возникла в код.

Сведения об исключении: System.InvalidOperationException: Формат запроса непризнан для URL-адреса неожиданно заканчивается '/GetMailsInfo'.

Ошибка источника:

Создано необработанное исключение во время выполнения текущего веб-запрос. Информация о происхождение и местоположение исключения могут быть идентифицированы с использованием исключения трассировка стека ниже.

Трассировка стека:

[InvalidOperationException: Request формат непризнан для URL-адреса неожиданно заканчивается '/GetMailsInfo.]
System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Тип тип, контекст HttpContext, HttpRequest запрос, ответ HttpResponse) +490982 System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, String filePath) +104
System.Web.Script.Services.ScriptHandlerFactory.GetHandler(HttpContext контекст, String requestType, String url, String pathTranslated) +127
System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, Путь VirtualPath, String pathTranslated, Boolean useAppConfig) +175 System.Web.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +120 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean & completedSynchronously) +155

Информация о версии: Microsoft.NET Версия Framework: 2.0.50727.42; Версия ASP.NET: 2.0.50727.42

Кто-нибудь знает, почему я вижу эту ошибку, и есть ли способ ее исправить?

4b9b3361

Ответ 1

Так как HTTP GET и HTTP POST отключены по умолчанию попробуйте добавить в свой конфигурационный файл следующее:

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

Ответ 2

У меня такая же проблема. Чтобы решить эту проблему, добавьте [ScriptService] к вашему сервису

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

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

            [System.Web.Script.Services.ScriptMethod()]
            [WebMethod]

            public string[] GetWords(string prefixText, int count)
            {
                List<string> words = new List<string>();
                words.Add("Apple");
                words.Add("Appertizer");
                words.Add("Apple tree");
                words.Add("Apple Cider");
                words.Add("Afternoon");
                words.Add("Morning");
                words.Add("Breakfeast");
                words.Add("Lunch");
                words.Add("Spider");
                words.Add("Morning");
                words.Add("Day");
                words.Add("Travel");
                words.Add("Night");
                words.Add("Car");
                words.Add("Bikes");
                words.Add("Love");
                words.Add("Good");

                //return words.Where(w => w.StartsWith(prefixText)).Take(count).ToList();

                //List<string> returnedList = words.Where(w => w.StartsWith(prefixText)).Take(count).ToList();
                return words.Where(w => w.ToUpper().StartsWith(prefixText.ToUpper())).ToArray();
            }

        }
    }
}

Ответ 3

Просто из интереса (- в случае доступа к веб-сервису через AJAX); Я обнаружил, что если заголовок "content-type" не передается (даже если он является локальным / "HttpPostLocalhost" ), возникает проблема, поэтому я сам передаю заголовок (например, через jQuery '$.ajax(), а не без использования метода jQuery '$.getJSON()', вместо того, чтобы прибегать к этому:

https://support.microsoft.com/en-us/kb/819267