Alguien puede detectar el problema con esta aplicación? Puedo abrirlo en el navegador y funciona, pero una llamada del lado del cliente (usando ambos jquery y asp.net ajax falla)

Contrato De Servicio

[OperationContract(Name = "GetTestString")]
[WebInvoke(Method = "GET",
           ResponseFormat = WebMessageFormat.Json
   )]
string GetTestString();

En La Web.config entre otros enlaces, tengo un webHttp unión

<endpoint address="ajax" binding="webHttpBinding" contract="TestService" behaviorConfiguration="AjaxBehavior" />

El Comportamiento Del Extremo De

  <endpointBehaviors>
    <behavior name="AjaxBehavior">
      <enableWebScript/>
    </behavior>
  </endpointBehaviors>
</behaviors>

Svc archivo

<%@ ServiceHost Service="TestService" %>

Cliente

var serviceUrl = "http://127.0.0.1/Test.svc/ajax/";
var proxy = new ServiceProxy(serviceUrl);

Estoy, a continuación, utilizando el enfoque en http://www.west-wind.com/weblog/posts/324917.aspx
para llamar al servicio

OriginalEl autor DotnetDude | 2010-03-12

2 Comentarios

  1. 6

    El ejemplo en el link utiliza un Http POST, no un Http GET. Ese es el «método de [que] no permitido» – usted necesita cambiar el código para hacer un lugar.

    El link de la exposición de la que fue su fuente de código de cliente que tiene este bloque:

     $.ajax( { 
                    url: url,
                    data: json,
                    type: "POST",
                    processData: false,
                    contentType: "application/json",
                    timeout: 10000,
                    dataType: "text",  //not "json" we'll parse

    Nota la type: "POST" allí – la suya tendría que ser «GET». Estoy asumiendo que usted ha tomado su JQuery desde el enlace que has publicado, debido a que el 405 de estado sugiere que su llamar código es incorrecto, no en el servicio.

    No estoy seguro de lo que quieres decir. El GetTestString tiene los atributos webinvoke atributo con la opción GET
    Editado mi respuesta para más detalle (desde el bloque de código no se sienta en un comentario muy bien).
    Gracias! Cuando he cambiado de POST a OBTENER en el proxy JS, comenzó a trabajar. ¿Sabes por qué el autor eligió para uso POST al obtener información del servicio (supongo que debe ser un blog)
    Cualquier servicio web, puede optar por aplicar cualquiera de los métodos Http – la más común de las cuales son GET, POST, PUT y DELETE. POST y PUT son utilizados normalmente para la información de la escritura, y así que en ese sentido el ejemplo que enlaza es inusual – un método llamado GetStockQuote parece una elección extraña para ser implementado como una POST – pero es el servicio opción del autor a hacer 🙂 vale la pena señalar que puede utilice cualquiera de los métodos para devolver un resultado (puedes utilizar Http DELETE para devolver información si quería!) – sólo que no necesariamente hacen que el buen sentido!
    Ojalá que yo pudiera darle un millón de votos para esto. Me siento tan estúpida por la falta de esta.

    OriginalEl autor Dan Puzey

  2. 1

    por método no permitido error, todo lo que usted necesita para comprobar es para asegurarse de que su web http convocatoria /solicitud es la misma que la especificada en [atributos webinvoke…] en el servicio de

      $.ajax({
                    type: "POST",.....});

    DEBE SER IDÉNTICO A LO ESPECIFICADO EN LA INTERFAZ de SERVICIO (en la sección «[Contrato de Operación]»)

     [WebInvoke(Method = "POST",BodyStyle = WebMessageBodyStyle.Wrapped,ResponseFormat = WebMessageFormat.Json)]

    OriginalEl autor msoliman

Dejar respuesta

Please enter your comment!
Please enter your name here