2009-03-17 4 views
34

Io sono il seguente errore durante l'esecuzione del servizio Web in IIS:Come posso risolvere un errore "Richiesta formato non riconosciuto per URL ..." in un servizio Web in esecuzione in IIS?

Server Error in '/Inbox Sevice' Application. Request format is unrecognized for URL unexpectedly ending in '/GetMailsInfo'. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Request format is unrecognized for URL unexpectedly ending in '/GetMailsInfo'.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[InvalidOperationException: Request format is unrecognized for URL unexpectedly ending in '/GetMailsInfo'.]
System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response) +490982 System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, 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(IExecutionStep step, Boolean& completedSynchronously) +155

Version Information: Microsoft .NET Framework Version:2.0.50727.42; ASP.NET Version:2.0.50727.42

Qualcuno sa perché sto vedendo questo errore e se c'è un modo per risolvere il problema?

+1

possibile duplicato del [formato richiesta è riconosciuto per l'URL in modo imprevisto termina] (http: //stackoverflow.com/questions/657313/request-format-is-unrecognized-for-url-unexpectedly-ending-in) –

+0

Per facilitare Google, la traduzione in tedesco del messaggio di errore riporta "** Unbekanntes Anforderungsformat für eine URL, die unerwartet mit '/ _myMethodName' endet. ** ". –

risposta

86

Dal HTTP GET e HTTP POST sono disabled by default prova ad aggiungere quanto segue al file di configurazione:

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

Come mai sono entrambi disabilitati? Cosa è abilitato di default? –

+0

non utilizzare queryString ha risolto il problema? che significa? op = GetMailsInfo –

+0

Per asp.net1.1 \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t

5

Ho lo stesso problema. per risolverlo aggiungere [ScriptService] al tuo servizio

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

solo per interesse (- nel caso di accesso al servizio web tramite AJAX); Ho scoperto che se non viene passata un'intestazione "content-type" (anche se si tratta di una richiesta locale/"HttpPostLocalhost"), allora il problema si verifica, quindi passo l'intestazione da sola (ad esempio tramite jQuery's $ .ajax()' metodo piuttosto che senza via di jQuery '$ GetJSON()' metodo), invece di ricorrere a questo:

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