2016-09-06 1 views
0

Ich kann eine Verbindung mit meinem WCF-Dienst auf IIS gehostet, wenn ich VS verwenden, um einen Client-Proxy generieren, aber wenn ich durch den Browser schaue ich eine leere Seite, die gleiche, wenn ich anhänge ? WSDL. Was mache ich falsch? Ich brauche die WSDLErhalte leere Seite versucht WSDL von WCF-Dienst zu sehen

Meine Service-Schnittstelle

[ServiceContract] 
public interface IObjectService 
{ 
    [OperationContract] 
    [WebInvoke(
     Method = "POST", 
     RequestFormat = WebMessageFormat.Json, 
     ResponseFormat = WebMessageFormat.Json, 
     UriTemplate = "/GetTrade" 
     )] 
    GetTradeResponse GetTrade(GetTradeRequest request); 
} 

Und mein web.config

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="ObjectServiceBehaviour"> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="BasicHttpEndpointBinding"> 
      <security mode="TransportCredentialOnly"> 
      <transport clientCredentialType="Windows" /> 
      </security> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <services> 
     <!-- This section is optional with the default configuration   model introduced in .NET Framework 4 --> 
     <service name="ObjectServiceApi.ObjectService" behaviorConfiguration="ObjectServiceBehaviour"> 

     <!-- This endpoint is exposed at the base address provided by host:http://localhost/ObjectService.svc --> 
     <endpoint address="" 
        binding="basicHttpBinding" 
      bindingConfiguration="BasicHttpEndpointBinding" 
        contract="ObjectServiceApi.Interface.IObjectService" /> 

     </service> 
    </services> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" minFreeMemoryPercentageToActivateService="0" multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
+0

Was die URL, die Sie anrufen wurden ist? Vielleicht hast du einen endlichen Schrägstrich?/'auf der URL wie folgt:' http: // localhost: PORT/ObjectService.svc/' –

+0

http://10.220.175.59:8085/ObjectService.svc - Ich habe mit und ohne den End-Schrägstrich versucht. Gibt es eine Art von IIS-Ablaufverfolgung, die ich einschalten kann, um zu sehen, ob irgendwelche Fehler geworfen werden? – NZJames

+0

Sie können versuchen, 'security mode =" None "' und 'transport clientCredentialType =" None "' zu setzen. Vielleicht gibt es ein Problem mit der Authentifizierung. –

Antwort

0

Sie stellen sicher, dass in IIS sehen Sie die Autorisierungsmethode auf Ihrer Anwendung aktiviert haben.

Ich bin fast sicher, dass Sie Ihre WSDL anrufen können, wenn Sie dies Ihr web.config ändern (!):

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <compilation targetFramework="4.5.2" /> 
    <httpRuntime targetFramework="4.5.2"/> 
    </system.web> 
    <system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="serviceBehavior"> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <bindings> 
     <basicHttpBinding> 
     <binding> 
      <security mode="TransportCredentialOnly"> 
      <transport clientCredentialType="Windows"/> 
      </security> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <protocolMapping> 
     <add scheme="http" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding"/> 
    </protocolMapping>  
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
</configuration> 
+0

Was machen die protocolMappings und Webserver-Blöcke? Sicherlich muss ich noch einen Endpunkt für IIS angeben oder wie weiß IIS, wo der Dienst ist? – NZJames

+0

'protocolMapping' definiert, welches Protokoll welche Bindung verwenden soll. Der 'webServer' Teil wird eigentlich nicht benötigt (kopiert von' web.config'). Sie müssen in Ihrer Datei web.config keinen Endpunkt angeben. IIS wird es automatisch für Sie behandeln, wenn Sie keinen definieren. –

+0

Das '' - Element wird nicht benötigt, wenn Sie 'basicHttpBinding' verwenden, da dies der Standard für WCF über' http' ist. – Tim