tags:

views:

49

answers:

1

Hello,

I am hosting a WCF service from inside a Windows service using WAS. When I set the service to listen on 127.0.0.1, I have connectivity from my local machine as well as from my network. However, when I set it to listen on my outbound interface port 443, I can no longer even see the wsdl by connecting with a browser. Strangely, I can connect to the service by using telnet. The cert I am using was generated for my interface by a CA, and I have successfully used this exact cert with this service before. When checking the application log, I see that the service starts without error and is listening on the correct interface.

From this information, it seems to me that the config file is in a valid state, but somehow misconfigured for what I want. I have, however, previously deployed this same setup on other sites using this config file. In case it is helpful, below is my config file. Any thoughts?

<!--<system.diagnostics>
    <sources>
        <source name="System.ServiceModel" switchValue="Warning, ActivityTracing"
          propagateActivity="true">
            <listeners>
                <add type="System.Diagnostics.DefaultTraceListener" name="Default">
                    <filter type="" />
                </add>
                <add name="ServiceModelTraceListener">
                    <filter type="" />
                </add>
            </listeners>
        </source>
    </sources>
    <sharedListeners>
        <add initializeData="app_tracelog.svclog"
          type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, 
    Culture=neutral, PublicKeyToken=b77a5c561934e089"
            name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
            <filter type="" />
        </add>
    </sharedListeners>
</system.diagnostics>-->

<appSettings/>
<connectionStrings/>

<system.serviceModel>

    <!--<diagnostics>
        <messageLogging logEntireMessage="true"
                      logMalformedMessages="true"
                      logMessagesAtServiceLevel="true"
                      logMessagesAtTransportLevel="true"
                      maxMessagesToLog ="1000"
                      maxSizeOfMessageToLog="524288"/>
    </diagnostics>-->
    <bindings>
        <basicHttpBinding>
            <binding name="basicHttps">
                <security mode="Transport">
                    <transport clientCredentialType="None"/>
                    <message />
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <services>
        <service behaviorConfiguration="ServiceBehavior" name="<fully qualified name of service>">
            <endpoint
                address=""
                binding="basicHttpBinding"
                name="OrdersSoap"
                contract="<fully qualified name of contract>"
                bindingNamespace="http://emr.orders.com/WebServices"
                bindingConfiguration="basicHttps"
            />

            <endpoint
                binding="mexHttpsBinding"
                address="mex"
                contract="IMetadataExchange"
            />

            <host>
                <baseAddresses>
                    <add baseAddress="https://&lt;external IP>/<name of service>>/" />
                </baseAddresses>
            </host>
        </service>
    </services>

    <behaviors>
        <serviceBehaviors>
            <behavior name="ServiceBehavior">
                <serviceMetadata httpsGetEnabled="False"/>
                <serviceDebug includeExceptionDetailInFaults="True" />
                <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>

</system.serviceModel>

A: 

You have httpsGetEnabled="False", that is probably why you cannot see the wsdl.

I think that you need to specify the security mode = Transport when using a https address.

Shiraz Bhaiji