I've installed a SSL certificate in IIS.
Now when I navigate to my domain https://www.example.com/ the page loads correctlty. But when I try to approach a web service (which normally works perfect over http) over https: https://www.example.com/service.svc/newprofile/?id=8&ipaddress=124.162.13.109 I get:
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /service.svc/newprofile/
I also checked here
- Webservice over SSL endpoint not found with 404
- create asp.net webservice for SSL HTTPS
- Moved my ASP.NET website to IIS 8 on windows server 2012... services missing: .svc files are viewable, but their methods give a 404
But renaming webHttpBinding
to basicHttpBinding
throws an unsupported error in combination with jsonp.
Also the service element name in the web.config matches the fully qualified named of the class that implements my contract.
Here's my web.config
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<bindings>
<webHttpBinding>
<binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true">
</binding>
<binding name="webHttpsBindingWithJsonP" crossDomainScriptAccessEnabled="true">
<security mode="Transport"></security>
</binding>
</webHttpBinding>
</bindings>
<client />
<services>
<service name="RestService.service">
<endpoint behaviorConfiguration="webHttp" binding="webHttpBinding" contract="RestService.Iservice" />
<endpoint address="/service.svc" binding="webHttpBinding" bindingConfiguration="webHttpBindingWithJsonP" contract="RestService.Iservice" />
<endpoint address="/service.svc" binding="webHttpBinding" bindingConfiguration="webHttpsBindingWithJsonP" contract="RestService.Iservice" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp />
</behavior>
<behavior name="webHttpBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
I checked the wsdl: http://www.example.com/service.svc?wsdl
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" name="service" targetNamespace="http://tempuri.org/">
<wsdl:types>
<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import schemaLocation="http://www.example.com/service.svc?xsd=xsd0" namespace="http://tempuri.org/"/>
<xsd:import schemaLocation="http://www.example.com/service.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
<xsd:import schemaLocation="http://www.example.com/service.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/RestService"/>
<xsd:import schemaLocation="http://www.example.com/service.svc?xsd=xsd3" namespace="http://schemas.microsoft.com/Message"/>
<xsd:import schemaLocation="http://www.example.com/service.svc?xsd=xsd4" namespace="http://schemas.datacontract.org/2004/07/AjaxControlToolkit"/>
<xsd:import schemaLocation="http://www.example.com/service.svc?xsd=xsd5" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="Iservice_newProfile_InputMessage">
<wsdl:part name="parameters" element="tns:newProfile"/>
</wsdl:message>
When I check over https: https://www.example.com/service.svc?wsdl
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" name="service" targetNamespace="http://tempuri.org/">
<wsdl:types>
<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import schemaLocation="https://www.example.com/service.svc?xsd=xsd0" namespace="http://tempuri.org/"/>
<xsd:import schemaLocation="https://www.example.com/service.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
<xsd:import schemaLocation="https://www.example.com/service.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/RestService"/>
<xsd:import schemaLocation="https://www.example.com/service.svc?xsd=xsd3" namespace="http://schemas.microsoft.com/Message"/>
<xsd:import schemaLocation="https://www.example.com/service.svc?xsd=xsd4" namespace="http://schemas.datacontract.org/2004/07/AjaxControlToolkit"/>
<xsd:import schemaLocation="https://www.example.com/service.svc?xsd=xsd5" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="Iservice_newProfile_InputMessage">
<wsdl:part name="parameters" element="tns:newProfile"/>
</wsdl:message>
The service in this case is defined as:
<OperationContract()> _
<Web.WebInvoke(Method:="GET", ResponseFormat:=Web.WebMessageFormat.Json, BodyStyle:=Web.WebMessageBodyStyle.Bare, _
UriTemplate:="newprofile/?id={id}&ipaddress={ipaddress}")> _
Function newProfile(ByVal Id As String, Optional ByVal IPAddress As String = "") As service.Profile
My webservice
Namespace RestService
<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> _
Public Class service
Implements Iservice
'my code
End Class
End Namespace
I enabled tracing in my web.config as well, here's part of the log (SO does not allow to post it all):
<E2ETraceEvent
xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System
xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>262155</EventID>
<Type>3</Type>
<SubType Name="Error">0</SubType>
<Level>2</Level>
<TimeCreated SystemTime="2014-10-27T19:07:08.0773174Z" />
<Source Name="System.ServiceModel" />
<Correlation ActivityID="{f7c83e1b-3e28-4e4f-8978-23f5073be422}" />
<Execution ProcessName="w3wp" ProcessID="1428" ThreadID="19" />
<Channel/>
<Computer>MYPC</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord
xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Error">
<TraceIdentifier>http://msdn.microsoft.com/nl-NL/library/System.ServiceModel.Channels.HttpChannelMessageReceiveFailed.aspx</TraceIdentifier>
<Description>Failed to lookup a channel to receive an incoming message. Either the endpoint or the SOAP action was not found.</Description>
<AppDomain>/LM/W3SVC/1/ROOT-2-130589104148009222</AppDomain>
<Source>System.ServiceModel.Activation.HostedHttpTransportManager/33997547</Source>
<ExtendedData
xmlns="http://schemas.microsoft.com/2006/08/ServiceModel/StringTraceRecord">
<IsRecycling>False</IsRecycling>
</ExtendedData>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent
xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System
xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>131074</EventID>
<Type>3</Type>
<SubType Name="Error">0</SubType>
<Level>2</Level>
<TimeCreated SystemTime="2014-10-27T19:07:08.0803197Z" />
<Source Name="System.ServiceModel" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="w3wp" ProcessID="1428" ThreadID="19" />
<Channel/>
<Computer>MYPC</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord
xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Error">
<TraceIdentifier>http://msdn.microsoft.com/nl-NL/library/System.ServiceModel.Diagnostics.EventLog.aspx</TraceIdentifier>
<Description>Wrote to the EventLog.</Description>