Estoy intentando usar servicios WCF sin extensión/.svc-less. ¿Alguien más puede confirmar o negar el problema que estoy experimentando?ServiceRoute + WebServiceHostFactory mata la generación de WSDL? Cómo crear un servicio WCF sin extensión con? Wsdl
utilizo de enrutamiento en el código, y hacer esto en Application_Start de global.asax.cs:
RouteTable.Routes.Add(new ServiceRoute("Data", new WebServiceHostFactory(), typeof(DataDips)));
He probado tanto en IIS 6 y IIS 7.5 y puedo utilizar el servicio bien (es decir, mi la configuración del controlador de asignación de comodines sin extensión apunta correctamente a ASP.NET). Sin embargo, la generación de metadatos está totalmente jodida. I puede pulse my/mex endpoint con WCF Test Client (y supongo svcutil.exe) - pero la generación de * wsdl que normalmente obtiene con .svc es tostada. No puedo presionarlo con un navegador (obtener 400 solicitudes incorrectas), no puedo usar wsdl.exe, etc. La generación de metadatos se configura correctamente en web.config.
Esto es un problema, por supuesto, porque el servicio se expone como basicHttpBinding para que un cliente ASMX antiguo pueda acceder a él. Pero, por supuesto, el cliente no puede generar el proxy sin una descripción WSDL.
Si en lugar de utilizar el enrutamiento serviceActivation en la configuración de este tipo, en lugar de registrar una ruta de código:
<serviceHostingEnvironment aspNetCompatibilityEnabled="true">
<serviceActivations>
<add relativeAddress="Data.svc" service="DataDips" />
</serviceActivations>
</serviceHostingEnvironment>
A continuación, voilá ... funciona.
Pero entonces no tengo una url limpia sin extensión. Si cambio relativeAddress de Data.svc a Data, entonces obtengo una excepción de configuración ya que esto no es compatible con config. (Debe usar una extensión registrada en WCF).
también he tratado de utilizar este código en conjunción con la configuración anterior:
RouteTable.Routes.MapPageRoute("","Data/{*data}","~/Data.svc/{*data}",false);
Mi pensamiento es que solo puedo señalar la URL sin extensión en la dirección URL configurada .svc. Esto no funciona - el /Data.svc sigue trabajando, pero/datos devuelve un 404.
Lo que encontrar una solución alternativa si se utiliza urlMappings en la configuración de este tipo, en conjunción con serviceActivation arriba:
<urlMappings>
<add url="~/Data" mappedUrl="Data.svc"/>
</urlMappings>
el problema con esto es doble - 1. parece enrevesado 2. en el WSDL generado, los criterios de valoración de operación aún se refieren a Data.svc /, en lugar de datos/- por lo tanto, theres dependencia de Data.svc realmente existente/respondiendo.
Esto no es realmente lo que quiero, incluso si algo resuelve el problema.
¿Existe una forma adecuada de obtener URLs de servicio WCF sin extensión para generar WSDL correctamente?
Paso a paso instrucciones aquí: http://stackoverflow.com/a/27850224/276949 –