2010-10-02 12 views
5

consigo "Punto final no encontrado" al intentar acceder a mi servicio a través del navegador enpunto final no encontró al alojar en ASP.NET

http://localhost:10093/Services/Service1.svc 

me sale "Error: No se puede obtener a partir de metadatos http://localhost:10093/Services/Service1.svc" cuando se trata de acceder a la misma dirección desde el wcftestclient.

Si coloco un punto de interrupción en la implementación del servicio es golpeado, así que supongo que el archivo SVC está configurado correctamente:

<%@ ServiceHost Language="C#" Debug="true" 
Service="MyApp.Core.Service.Service.MyAppService,MyApp.Core.Service" 
Factory="CommonServiceFactory.WebServiceHostFactory,CommonServiceFactory" %> 

Aquí es mi config:

<system.serviceModel> 
    <services> 
     <service name="MyApp.Core.Service.Service.MyAppService,MyApp.Core.Service" 
       behaviorConfiguration="MainServiceBehavior"> 
     <endpoint name="newEndpoing" 
      binding="basicHttpBinding" bindingConfiguration="" 
      contract="MyApp.Core.Service.IMyAppService" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="MainServiceBehavior"> 
      <serviceMetadata httpGetEnabled="True"/> 
      <serviceDebug includeExceptionDetailInFaults="False" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
+0

aquí es un proyecto de ejemplo con el tema - http://www.nippyzip.com/uploads/101003074000-57717.zip – chief7

+0

tengo el mismo problema. Y sin punto final no puede generar el cliente para mi aplicación Silverlight – Evgeny

Respuesta

5

para que tenga una * .svc archivo para alojar su servicio. ¿Puedes hacer clic con el botón derecho en Visual Studio en ese archivo y decir "Mostrar en el navegador"? ¿Obtienes algo allí o arrojas un error de inmediato?

Siguiente: su punto extremo de servicio no tiene ningún atributo address="", que creo que es obligatorio; intente agregar eso (incluso si no especifica una dirección en él).

Si está hospedando en IIS, su dirección de servicio está definida por el directorio virtual donde está presente su archivo SVC y el archivo SVC en sí mismo; es posible que no pueda definir un puerto específico o algo similar (IIS manejará ese).

Así que trate de conectarse a

http://localhost/Services/Service1.svc 

hace ese trabajo por casualidad ??

Actualización: volviendo a leer su publicación más de cerca, está especificando una fábrica especial para el servicio - WebServiceHostFactory. ¿Es este el predeterminado WebServiceHostFactory provisto por .NET, o es algo que construiste tú mismo?

El punto es: .NET WebServiceHostFactory utilizará el webHttpBinding para los servicios REST WCF - que no va a trabajar con un punto final especificando basicHttpBinding, ni el servicio REST tener ningún metadatos ....

actualización # 2: intente utilizar solo el nombre completo de la clase del servicio, pero sin la especificación del ensamblado, tanto en su archivo SVC como en el archivo de configuración.

Así que cambiar esta situación:

Service="MyApp.Core.Service.Service.MyAppService,MyApp.Core.Service" 

a esto:

archivo
Service="MyApp.Core.Service.Service.MyAppService" 

SVC:

<%@ ServiceHost Language="C#" Debug="true" 
Service="MyApp.Core.Service.Service.MyAppService" %> 
archivo

Config:

<services> 
    <service name="MyApp.Core.Service.Service.MyAppService" 
      behaviorConfiguration="MainServiceBehavior"> 
    <endpoint name="newEndpoing" 
      binding="basicHttpBinding" bindingConfiguration="" 
      contract="MyApp.Core.Service.IMyAppService" /> 
    </service> 
</services> 
+0

Sí, estoy usando un .svc para alojar el servicio. Obtengo lo mismo cuando hago clic derecho y veo en el navegador. – chief7

+1

Se agregó dirección vacía, sin cambios. Url probado sin puerto, recibido "Internet Explorer no puede mostrar la página web" Es una fábrica especial pero traté de usar la fábrica de host estándar y obtuve el mismo error – chief7

+1

@ Chief7: siempre que no pueda hacer la "Vista en Navegador "con éxito, su servicio tiene un problema importante y mientras no funcione, no podrá iniciar el servicio. Actualicé mi respuesta con algunas recomendaciones más para probar –

0

mi web.config de mi servicio WCF es muy similar a la suya. Definitivamente tiene que agregar el punto final MEX como dijo Shiraz. Agregué una configuración de comportamiento que permite que cualquier tamaño de mensaje pase por el WCF. Trate de usar estos ajustes si puede ayudar a usted (no se olvide de cambiar los ajustes del contrato):

<system.serviceModel>  
<diagnostics> 
    <messageLogging logMalformedMessages="true" logMessagesAtTransportLevel="true" /> 
</diagnostics> 
<bindings> 
    <basicHttpBinding> 
    <binding name="BasicHttpBinding_IService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="524288000" maxBufferPoolSize="524288000" maxReceivedMessageSize="524288000" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> 
     <readerQuotas maxDepth="500000000" maxStringContentLength="500000000" maxArrayLength="500000000" maxBytesPerRead="500000000" maxNameTableCharCount="500000000" /> 
     <security mode="None"> 
     <transport clientCredentialType="None" proxyCredentialType="None" realm=""> 
      <extendedProtectionPolicy policyEnforcement="Never"/> 
     </transport> 
     <message clientCredentialType="UserName" algorithmSuite="Default"/> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="serviceBehavior"> 
     <dataContractSerializer maxItemsInObjectGraph="6553600" /> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<services> 
    <service behaviorConfiguration="serviceBehavior" name="RC.Svc.Web.TPF.Service"> 
    <endpoint 
     address="" 
     binding="basicHttpBinding" 
     bindingConfiguration="BasicHttpBinding_IService" 
     contract="RC.Svc.Web.TPF.IService" /> 
    <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" /> 
    </service> 
</services> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
<client /> 

+0

También puede usar el WcfTestClient.exe en su carpeta de Visual Studio para probarlo fácilmente (Visual Studio 10.0 \ Common7 \ IDE \ WcfTestClient.exe y http://msdn.microsoft.com/en-us/library/bb552364.aspx). Necesitará un punto final MEX funcional. –

+1

Tengo un punto mex definido e intenté agregar el servicio al wcftestclient. Digo que el servicio se agregó con éxito pero no se agregaron servicios a la lista. – chief7

4

En el Explorador de soluciones, abra su .svc mediante el uso de "vista Marcas", asegúrese usted tiene algo así como:

... ServiceHost Language="C#" Debug="true" 
    Service="Yourservice.yourservice" CodeBehind="yourservice.svc.cs" %> 

Dónde Yourservice es su espacio de nombres y yourservice es nombre de su .svc creado.

4

que tuvieron los mismos resultados (de punto final no encontrado) cuando pongo esto en la ventana del navegador

http://c143253-w7a:2221/ws/myService.svc 

Luego, cuando me puse toda la url para el método, que funcionó muy bien. Al igual que este

http://c143253-w7a:2221/ws/myService.svc/HelloWorld?theInput=pds 

En mi archivo .svc estoy usando este

Factory="System.ServiceModel.Activation.WebServiceHostFactory" 

creo que la fábrica no gira el punto final hasta que se necesite. Es por eso que obtenemos Endpoint no encontrado en el navegador (?).

Aquí se muestra la firma del método en el código de la interfaz.

using System.ServiceModel.Web; 

[WebGet(UriTemplate = "HelloWorld?theInput={theInput}")] 
[OperationContract] 
string HelloWorld(string theInput); 

No puse nada en la webconfig. Hay algunas cosas ahí, pero creo que vinieron con la plantilla VS, Add WCF Service. Se ve así:

<system.serviceModel> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name=""> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
</system.serviceModel> 
Cuestiones relacionadas