2012-06-05 77 views
18

Estoy trabajando en WCF y funcionó bien en localhost. Después de colocarlo en el servidor de producción, me lanza una excepción "No se pudo activar el servicio solicitado 'http://global-kazway.kz/Service1.svc'. Consulte los registros de seguimiento de diagnóstico del servidor para obtener más información".No se puede activar el servicio WCF

Soy nuevo en Servicios y he estado tratando de resolver este problema durante casi 3 horas.

Aquí está App.config del cliente;

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections></configSections> 
    <connectionStrings> 
    <add name="TestProject.Properties.Settings.DBConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\1\Documents\visual studio 2010\Projects\TestProject\TestProject\AppData\DB.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /><add name="DBEntities" connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=C:\Users\1\Documents\visual studio 2010\Projects\TestProject\TestProject\AppData\DB.mdf;integrated security=True;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /><add name="DBEntities1" connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\AppData\DB.mdf;integrated security=True;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings> 
    <system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="BasicHttpBinding_IService1" closeTimeout="00:01:00" 
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
      allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
      maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
      useDefaultWebProxy="true"> 
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
      maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      <security mode="None"> 
      <transport clientCredentialType="None" proxyCredentialType="None" 
       realm="" /> 
      <message clientCredentialType="UserName" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://global-kazway.kz/Service1.svc" binding="basicHttpBinding" 
     bindingConfiguration="BasicHttpBinding_IService1" contract="kazwayServiceReference.IService1" 
     name="BasicHttpBinding_IService1" /> 
    </client> 
    </system.serviceModel> 
</configuration> 
+1

proporcionan también la configuración del servicio, por favor. – TarasB

+2

Hola Nate. Veo que nunca marcó ninguna de sus preguntas como respondidas !!! Si desea que la gente de aquí responda sus preguntas, comience a pagarlo con una respuesta marcada. Entonces, por ejemplo, si la información de 13 votaciones ascendentes te ha ayudado, por favor márcalo como una respuesta. –

Respuesta

61

El primer paso en la resolución de problemas de una aplicación WCF es abrir un navegador y escribir el URI de servicio. Por lo tanto, según el cliente: navegaría al http://global-kazway.kz/Service1.svc

Ahora vea qué tipo de resultados obtiene. ¿Excepción? La pantalla de servicio? ¡Usualmente puede obtener su mejor información de esta pantalla! A veces señala cuál es su problema, como perder un comportamiento.

Compare su web.config con las entradas desplegadas de web.config. Puede encontrar algo allí también. Finalmente, puede que tenga que administrar la seguridad en su carpeta. Pero la pantalla del navegador podría deletrear todo para usted muy claramente.

3

estoy trabajando sobre WCF y ha funcionado muy bien en localhost.After coloqué al servidor de producción, me thows una excepción "El servicio solicitado, 'http://global-kazway.kz/Service1 .svc' no se pudo activar. Ver registros de seguimiento de diagnóstico del servidor para obtener más información "

This MSDN article describes how to configure tracing on the server. Una vez que haya hecho eso, puede consultar los registros de seguimiento de diagnóstico del servidor y es probable que encuentre el problema.

2

Para tener una descripción más detallada del error por favor, introduzca el código en el archivo web.config del servicio: -

<serviceBehaviors> 
    <behavior name="MyServiceBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 

continuación, utilizar este comportamiento en servicio en su servicio como este: -

<service name="MyService" behaviorConfiguration="MyServiceBehavior" > 
     <endpoint address="" binding="basicHttpBinding" xxxx="" xxxxx="" xxxxx="" xxxx="" xxxx="" /> 
     <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://ServerAddress:AnyPortIfspecified/VirtualDirname"/> 
      </baseAddresses> 
     </host> 
     </service> 

Esto le dará una descripción detallada del error.

La segunda cosa que usted puede intentar es comprobar esto: -

<host> 
     <baseAddresses> 
      <add baseAddress="http://ServerAddress:AnyPortIf specified/VirtualDir name"/> 
     </baseAddresses> 
     </host> 

asegúrese de que su dirección de base no es localhost. TC

+0

Estoy buscando agregar un 'comportamiento' a mi aplicación para llegar al fondo de este problema, pero parece que su respuesta es incompleta. No hay nada después de "esto: -". Sin embargo, he votado a favor de su respuesta porque apuntaba en la dirección correcta. –

5

Estoy trabajando en un proyecto y me enfrenté al mismo problema. Cuando revisé el Visor de eventos para rastrear el error, encontré dónde estaba el problema.

mensaje de Visor de sucesos:

Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/7540993 
Exception: System.ServiceModel.ServiceActivationException: The service '/CODWebService/Service1.svc' cannot be activated due to an exception during compilation. The exception message is: Memory gates checking failed because the free memory (164065280 bytes) is less than 5% of total memory. As a result, the service will not be available for incoming requests. To resolve this, either reduce the load on the machine or adjust the value of minFreeMemoryPercentageToActivateService on the serviceHostingEnvironment config element.. ---> System.InsufficientMemoryException: Memory gates checking failed because the free memory (164065280 bytes) is less than 5% of total memory. As a result, the service will not be available for incoming requests. To resolve this, either reduce the load on the machine or adjust the value of minFreeMemoryPercentageToActivateService on the serviceHostingEnvironment config element. 

Luego añade el siguiente código para el archivo web.config de mi servicio.

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" minFreeMemoryPercentageToActivateService="1" /> 

Este elemento debe ser colocado en <system.serviceModel>

1

yo era capaz de resolver el problema siguiendo los pasos siguientes utilizando Visual Studio 2013:

  1. Ir a su proyecto carpeta en la que tiene su * .svc archivo
  2. Haga clic derecho * .svc archivo ->Ver en el navegador
  3. Validar si son capaces de navegar por el servicio

enter image description here

  1. Ir a la carpeta del proyecto en la que tiene su archivo app.config o donde desea consumir el servicio.
  2. proyecto clic derecho -> Añadir ->Servicio de Referencia
  3. Haga clic Descubrir -> En Servicios Select Service -> Dar nombre deseado a su referencia de servicio -> Haga clic en OK
  4. se va a crear "ServiceReference1" en la carpeta "Referencias Servicio" & crear automáticamente/archivo app.config actualización

enter image description here

1

Lo primero es tomar la dirección url del servicio (p. Ej. http://youservice:808/Area.Service/Service.svc) y colóquelo en el campo url del navegador para verificar si el servicio se está ejecutando.

En mi caso, no se estaba ejecutando.

El servidor remoto tenían un proceso en ejecución que utiliza mucho o CPU y la RAM (proceso de SQL)

Esto estaba bloqueando el servicio.

Al cerrar/detener algunos procesos en el Administrador de tareas en el servidor remoto se recuperó el servicio.

Cuestiones relacionadas