asp.net - studio - ¿Cómo soluciono un error "No se reconoce el formato de solicitud para URL..." en un servicio web que se ejecuta en IIS?
web service asp net c# example (3)
Como HTTP GET y HTTP POST están deshabilitados de forma predeterminada, intente agregar lo siguiente a su archivo de configuración:
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>
Recibo el siguiente error al ejecutar el servicio web en IIS:
Error de servidor en la aplicación ''/ Inbox Sevice''. El formato de solicitud no se reconoce para URL que termina inesperadamente en ''/ GetMailsInfo''. Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.
Detalles de la excepción: System.InvalidOperationException: el formato de solicitud no se reconoce para la URL que termina inesperadamente en ''/ GetMailsInfo''.
Error de fuente:
Se generó una excepción no controlada durante la ejecución de la solicitud web actual. La información sobre el origen y la ubicación de la excepción se puede identificar utilizando el seguimiento de pila de excepción a continuación.
Stack Trace:
[InvalidOperationException: el formato de solicitud no se reconoce para URL que termina inesperadamente en ''/ GetMailsInfo''.]
System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler (Tipo de tipo, contexto HttpContext, solicitud HttpRequest, respuesta HttpResponse) +490982 System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler (contexto HttpContext, verbo de cadena, url de cadena, String 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 path, String pathTranslated, Boolean useAppConfig) +175 System.Web.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +120 System.Web.HttpApplication. ExecuteStep (paso IExecutionStep, booleano y completado sincrónicamente) +155Información de la versión: Microsoft .NET Framework Version: 2.0.50727.42; Versión ASP.NET: 2.0.50727.42
¿Alguien sabe por qué estoy viendo este error y si hay alguna forma de solucionarlo?
Solo por interés (en el caso de acceder al servicio web a través de AJAX); Descubrí que si no se pasa un encabezado de "tipo de contenido" (incluso si es una solicitud local / "HttpPostLocalhost"), entonces ocurre el problema, por lo que paso el encabezado (por ejemplo, a través de ''$ .ajax de jQuery'' () ''Método en lugar de sin el método'' $ .getJSON () ''de jQuery), en lugar de recurrir a esto:
Tengo el mismo problema. Para resolverlo, agrega [ScriptService] a tu servicio
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();
}
}
}
}