Jquery con WCF
Frecuentes
Visto 235 equipos
4
Estoy tratando de hacer que mi código jquery funcione con WCF. Estoy empezando con algo muy simple. El servicio WCF está alojado en IIS. Tiene una interfaz simple y una implementación simple. El siguiente es mi código WCF.
[ServiceContract]
public interface IEvalService
{
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "GetId",
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string GetId();
}
La implementación de la interfaz anterior es la siguiente:
[AspNetCompatibilityRequirements(RequirementsMode=
AspNetCompatibilityRequirementsMode.Allowed)]
public class EvalService: IEvalService
{
public string GetId()
{
BenchMarkStatus benchMarkStatus = new BenchMarkStatus();
return benchMarkstatus.Name;
}
}
Por supuesto, hay una clase de referencia de la siguiente manera:
[DataContract]
public class BenchMarkStatus
{
private string _name;
public BenchMarkStatus()
{
_name = "Sudarshan";
}
[DataMember]
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
}
El archivo de configuración para el servicio web es el siguiente:
<services>
<service name="BenchMarkServiceLiabrary.EvalService">
<endpoint address="10.66.26.171"
binding="webHttpBinding"
contract="BenchMarkServiceLiabrary.IEvalService"
behaviorConfiguration="WEB" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="WEB">
<webHttp helpEnabled="true" defaultOutgoingResponseFormat="Json"/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"
aspNetCompatibilityEnabled="true" />
Y en el lado del cliente tengo el siguiente código:
$.ajax({
type: 'GET',
url: "http://10.66.26.171/EvalService/Eval.svc/GetId?callback=?",
contentType: "json/application; charset=utf-8",
dataType: "jsonp",
jsonpCallback: 'jsonCallback',
success: function (data) { alert(data) }
});
function jsonCallback() {
alert("me");
}
Recibo un error 404. Inicialmente tuve problemas con cosas de dominios cruzados... pero ahora no se puede acceder a la función GetId desde el código del cliente. ¿Puede ayudarme alguien, por favor?
2 Respuestas
0
Su problema es la parte de la dirección del servicio en web.config
Debido a que está hospedando en iis, su servicio estará disponible en:
http://localhost/EvalService/Eval.svc
(localhost si su iis se ejecuta localmente o si no, la ip o dirección del iis remoto)
Esta sería la dirección del punto final de su servicio si no hubiera agregado la parte de la dirección en web.config, con la parte de la dirección agregada puede encontrar ese punto final en http://localhost/EvalService/Eval.svc/10.66.26.171
Si solo tiene un punto final, puede omitirlo de manera segura o simplemente tener una dirección = "" en la configuración de su servicio y acceder a su servicio en esta dirección http://localhost/EvalService/Eval.svc
:
<service name="BenchMarkServiceLiabrary.EvalService">
<endpoint address=""
binding="webHttpBinding"
contract="BenchMarkServiceLiabrary.IEvalService"
behaviorConfiguration="WEB" />
</service>
contestado el 09 de mayo de 14 a las 15:05
-1
StackOverflow sugiere algunas preguntas antiguas; Realmente espero que ya te hayas mudado a WebAPI, es mucho más fácil. Cada vez que he intentado configurar un servicio wcf ha sido una pelea. Pero con respecto a la Cuestión; Tuve un problema muy similar hace un tiempo, y al agregar EndpointBehaviors lo resolvió por mí.
Intente actualizar sus endPointBehaviors a lo siguiente
<endpointBehaviors>
<behavior name="WEB">
<webHttp helpEnabled="true" defaultOutgoingResponseFormat="Json"/>
<enableWebScript />
</behavior>
</endpointBehaviors>
contestado el 09 de mayo de 14 a las 14:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas jquery wcf or haz tu propia pregunta.
¿Recibe el error 404 si navega por la URL del servicio? - granaker
¿Qué sucede si solo presiona el servicio en su navegador?
http://10.66.26.171/EvalService/Eval.svc/GetId
? Ya que no estás enviando ni recibiendoBenchMarkStatus
no necesita estar marcado conDataContract
/DataMember
atributos: no es parte de su contrato de servicio. - SliverNinja - MSFT