2011-09-01 5 views
6

Sto utilizzando WCF Restservice per autenticare l'utente. Ho un metodo POST e funziona bene con jquery ma fallisce con il test Fiddler. Ottengo 415 Tipo di supporto non supportato.Il metodo POST del servizio di ripristino WCF non riesce in Fiddler

Ecco il mio codice

[OperationContract] 
    [WebInvoke(Method = "POST", UriTemplate = "Login", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
    public string Login(string userName, string password) 
    { 
     string valid; 

     // Log in user 
     int authenticatedId = AuthenticateManager.Authenticate(userName, password); 
     if (authenticatedId != -1) 
     { 
      valid = "Welcome " + userName + "!"; 
     } 
     else 
     { 
      valid = "Login failed!"; 
     } 

     return valid; 
    } 

Questo è quello che sto passando in corpo Fiddler

[{ "userName":"dusshyi", 
    "password":"subram1" }] 

Questo è ciò che la generazione di violinista

<HTML><HEAD><STYLE type="text/css">#content{ FONT-SIZE: 0.7em; PADDING-BOTTOM: 2em; MARGIN-LEFT: 30px}BODY{MARGIN-TOP: 0px; MARGIN-LEFT: 0px; COLOR: #000000; FONT-FAMILY: Verdana; BACKGROUND-COLOR: white}P{MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px; COLOR: #000000; FONT-FAMILY: Verdana}PRE{BORDER-RIGHT: #f0f0e0 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #f0f0e0 1px solid; MARGIN-TOP: -5px; PADDING-LEFT: 5px; FONT-SIZE: 1.2em; PADDING-BOTTOM: 5px; BORDER-LEFT: #f0f0e0 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #f0f0e0 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e5e5cc}.heading1{MARGIN-TOP: 0px; PADDING-LEFT: 15px; FONT-WEIGHT: normal; FONT-SIZE: 26px; MARGIN-BOTTOM: 0px; PADDING-BOTTOM: 3px; MARGIN-LEFT: -30px; WIDTH: 100%; COLOR: #ffffff; PADDING-TOP: 10px; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #003366}.intro{MARGIN-LEFT: -15px}</STYLE> 
<TITLE>Service</TITLE></HEAD><BODY> 
<DIV id="content"> 
<P class="heading1">Service</P> 
<BR/> 
<P class="intro">Endpoint not found.</P> 
</DIV> 
</BODY></HTML> 

Per favore aiuto!

+0

potete inserire la richiesta violinista piena sta generando e la risposta completa? – scmccart

+0

Ho aggiornato la mia domanda – Hardcode

risposta

13

È stato impostato il Tipo di contenuto della richiesta su application/json nell'editor del corpo Richiesta di Fiddler?

enter image description here

+0

Ottengo errore 404 non trovato! – Hardcode

+1

Segnalo come risposta! Ho appena rimosso la barra in avanti dall'URL e ho funzionato. Ex. http://www.example.com/Login – Hardcode

+0

L'ho fatto e ancora non ha funzionato per me – PositiveGuy

3

Ho avuto lo stesso problema di questa mattina ...

Che fissa per me è stato quello di fare clic sulla scheda "Compositore", quindi aggiungere il seguente alla sezione "intestazioni di richiesta":

Content-Type: application/x-www-form-urlencoded 

senza questa linea, ho notato che il registro ha mostrato che stava tentando di chiamare il mio servizio REST con un Content-Type di "text/html", e il servizio non si sarebbe chiamato.

Ciò anche accadere se ho aggiunto la linea:

Content-Type: application/json 

Tuttavia, dopo aver aggiunto la riga "Content-Type: application/x-www-form-urlencoded", Fiddler sarebbe ora chiamare il servizio con un tipo di contenuto "application/json" e il servizio Web è stato chiamato correttamente. Strano ...

ho creato un WALKTHROUGH completa di creazione di un Web Service JSON WCF, e testarlo con Fiddler, sulla seguente pagina:

http://mikesknowledgebase.com/pages/Services/WebServices-Page1.htm

+0

Questo lo ha risolto anche per me. Senza questo, ho ottenuto null come parametro nel mio controller. –

+0

L'ho preso, ora ho un Default (MyDataType) come parametro invece di null. –

1

Fiddler Web Debugger: sezione Compositore; impostazioni

Parsed 
POST,../Service.svc/Login,HTTP/1.1 

Request Header: 
User-Agent: Fiddler 
Content-Type: application/json;charset=UTF-8 
Host: localhost:15021 
Content-Length: 43 

Request Body: 
{"username":"ABC","password":"pwd"} 

e quindi eseguire

Problemi correlati