2011-09-01 21 views
6

Estoy utilizando WCF Restservice para autenticar usuario. Tengo un método POST y funciona bien usando jquery pero falla en la prueba de Fiddler. Obtengo 415 Tipo de medio no admitido.Servicio WCF Método POST falla en Fiddler

Aquí está mi código

[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; 
    } 

Esto es lo que estoy pasando en el cuerpo violinista

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

Esto es lo que genera el 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> 

Por favor ayuda!

+0

Se puede publicar está generando la solicitud violinista completa y la respuesta completa? – scmccart

+0

He actualizado mi pregunta – Hardcode

Respuesta

13

¿Ha configurado el tipo de contenido de la solicitud en application/json en el editor de cuerpo de Fiddler's Request?

enter image description here

+0

Recibo el error 404 No encontrado. – Hardcode

+1

¡Voy a marcar esto como respuesta! Solo eliminé la barra inclinada de la url y funcioné. Ex. http://www.example.com/Login – Hardcode

+0

Lo hice y todavía no funcionó para mí – PositiveGuy

3

que tenían el mismo problema de esta mañana ...

Lo que se fija para mí fue hacer clic en la pestaña "Compositor", a continuación, añadir lo siguiente a la sección "cabeceras de solicitud":

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

sin esta línea, que señaló que el registro mostró que estaba intentando llamar a mi servicio REST con un tipo de contenido "text/html", y el servicio no conseguiría llamada.

Esto incluso sucedería si he añadido la línea:

Content-Type: application/json 

Sin embargo, después de añadir la línea "Content-Type: application/x-www-form-urlencoded", El violinista haría ahora llame al servicio con un tipo de contenido de "application/json", y el servicio web se llamó correctamente. Extraño ...

He creado un walkthough completo de creación de un servicio web JSON WCF, y para ello, violinista, en la siguiente página:

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

+0

Esto también lo resolvió para mí. Sin esto, obtuve nulo como parámetro en mi controlador. –

+0

Recupero eso, ahora obtengo un Default (MyDataType) como parámetro en lugar de null. –

1

Fiddler Web Depurador: Compositor sección; ajustes

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"} 

y luego ejecutar

Cuestiones relacionadas