servicio publicación ningun metadatos habilitar especificada error encuentra dirección descargar c# wcf

c# - publicación - error de metadatos wcf



El host del servicio WCF no puede encontrar ningún metadata del servicio (10)

De manera predeterminada, Visual Studio intentará configurar un cliente / prueba ui para que juegues con tu nuevo servicio. Para ello, debe conocer la estructura y los métodos que ofrece su servicio. Esto se logra al consumir una definición en el formato estándar WSDL. Sin embargo, WCF no publicará estos datos de forma predeterminada.

Debe configurar un comportamiento de punto final de intercambio de metadatos para acehive.

Publique su archivo de configuración aquí y podemos ayudarlo, o busque en google / stack para metadataexchange y wsdl en WCF

Estoy aprendiendo wcf y actualmente llegué tan lejos.

Archivo CS:

using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespace wcfLib { [ServiceContract] public interface IfaceService { [OperationContract] int wordLen(string word); } public class StockService : IfaceService { public int wordLen(string word) { return word.Length; } } }

Sin embargo, cuando intento ejecutarlo, aparece un error:

El servidor de servicio WCF no puede encontrar ningún metadata de servicio ...

¿Alguna idea de que podría ser?

Archivo de configuración:

<system.serviceModel> <services> <service behaviorConfiguration="wcfLib.Service1Behavior" name="wcfLib.Service1"> <endpoint address="" binding="wsHttpBinding" contract="wcfLib.ser"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="http://localhost:8732/Design_Time_Addresses/wcfLib/Service1/" /> </baseAddresses> </host> </service> </services> <behaviors> <serviceBehaviors> <behavior name="wcfLib.Service1Behavior"> <serviceMetadata httpGetEnabled="True"/> <serviceDebug includeExceptionDetailInFaults="False" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel>


La forma más fácil de crear este problema es simplemente factorizar el nombre de su interfaz. Sin duda, cambia el nombre de la instancia en su proyecto, pero no actualiza el archivo web.config. Para recrear la creación de un nuevo servicio, cambie el nombre de su interfaz y toque F5, boom, aparecerá el diálogo de metadatos :-) La respuesta es la anterior, solo recuerde modificar su archivo web.config manualmente.

Saludos


Necesitas tener lo siguiente en tu archivo de configuración:

1) un comportamiento de servicio para metadatos:

<behaviors> <serviceBehaviors> <behavior name="Metadata"> <serviceMetadata httpGetEnabled="true" /> </behavior> </serviceBehaviors> </behaviors>

2) referencia el comportamiento del servicio en la configuración de su servicio

<service name="wcfLib.StockService" behaviorConfiguration="Metadata"> .... </service>

* El valor del nombre en las etiquetas de servicio en el archivo de configuración debe tener el mismo nombre que la clase física que está implementando el contrato. Recuerde si el nombre de la clase cambia, asegúrese de cambiar este valor para que coincida.

3) un punto final para MEX (intercambio de metadatos)

<service name="wcfLib.StockService" behaviorConfiguration="Metadata"> .... <endpoint name="mex" address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service>

Con todo esto en su lugar, las cosas deberían estar bien! :-)


Obtuve exactamente el mismo problema y estuve revisando mi configuración con fuerza y todo estaba en línea con los puntos finales de metadatos, etc. ¿El problema? Esta línea:

<service behaviorConfiguration="wcfLib.Service1Behavior" name="wcfLib.Service1">

El valor del name DEBE, DEBE tener el nombre de la clase física que está implementando el contrato. Lo olvidé ... una vez más y lo nombré arbitrariamente pensando que podría ser cualquier cadena. Entonces, en el caso anterior, la clase de implementación debe llamarse Service1 . Si el nombre de la clase cambia, asegúrese de cambiar este valor.

Esto es como las cosas de WCF 101 y todavía me quema a pesar de que he estado haciendo WCF desde CTP en Framework 3.0. Paja...



Recibí este error porque mi nombre de servicio era incorrecto. Usando netTcpBinding y mexTcpBinding con httpGetEnabled = False luego funcionó.


Sé que esta es una vieja pregunta pero pensé que le daría mis 2 centavos por el tema ya que me acaba de suceder.

De alguna manera, cambié mi plataforma de compilación de "Cualquier CPU" a "x86" para el servicio web en sí. La segunda vez que lo cambié de nuevo a "Cualquier CPU", resolvió el problema.


También puede obtener este mismo error si está creando su host de servicio programáticamente y se olvida de agregar los atributos [ServiceContract] y [OperationContract] al contrato de interfaz.


Tuve la activación HTTP activada. Asegúrate de tenerlo encendido.


// get the <system.serviceModel> / <services> config section ServicesSection services = ConfigurationManager.GetSection("system.serviceModel/services") as ServicesSection; ServiceHost host = new ServiceHost(typeof(SelfHostedService.Service)); // enumerate over each <service> node foreach (ServiceElement aService in services.Services) { Console.WriteLine(); Console.WriteLine("Name: {0} / Behavior: {1}", aService.Name, aService.BehaviorConfiguration); // enumerate over all endpoints for that service foreach (ServiceEndpointElement see in aService.Endpoints) { Console.WriteLine("/tEndpoint: Address = {0} / Binding = {1} / Contract = {2}", see.Address, see.Binding, see.Contract); //host.AddServiceEndpoint( } } try { Console.WriteLine("Service EndPoints are: "); foreach (ServiceEndpoint endpoint in host.Description.Endpoints) { Console.WriteLine("{0} ({1})", endpoint.Address.ToString(), endpoint.Binding.Name); } host.Open(); Console.WriteLine(string.Concat("Service is host at ", DateTime.Now.ToString())); Console.WriteLine("/n Self Host is running... Press <Enter> key to stop"); } catch(Exception ex) { Console.WriteLine(ex.Message.ToString()); }

Si aún no funciona, elimine el archivo de configuración actual y vuelva a crearlo con su nombre predeterminado App.config, esto es correcto.