Как исправить ошибку "Запрос формата непризнанной для 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
Кто-нибудь знает, почему я вижу эту ошибку, и есть ли способ ее исправить?
Ответы
Ответ 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