Как исправить ошибку «Формат запроса не распознан для URL ...» в веб-службе, работающей в IIS? - PullRequest
37 голосов
/ 17 марта 2009

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

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

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

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

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

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

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

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

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

Ответы [ 3 ]

88 голосов
/ 17 марта 2009

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

<configuration>
    <system.web>
    <webServices>
        <protocols>
            <add name="HttpGet"/>
            <add name="HttpPost"/>
        </protocols>
    </webServices>
    </system.web>
</configuration>
5 голосов
/ 03 ноября 2015

У меня та же проблема. Чтобы решить эту проблему, добавьте [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();
            }

        }
    }
}
2 голосов
/ 16 мая 2016

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

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

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