here's a problem I'm struggling with:
The configuration below used to work fine (site's binding was http, port 81). It fails now, after the site's binding was changed to be https, port 443 and use a valid server authentication certificate. The error message in Event Viewer is this:
WebHost failed to process a request. Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/25652103 Exception: System.ServiceModel.ServiceActivationException: The service '/services/api/oauth2' cannot be activated due to an exception during compilation. The exception message is: Could not find a base address that matches scheme http for the endpoint with binding WebHttpBinding. Registered base address schemes are [https].. ---> System.InvalidOperationException: Could not find a base address that matches scheme http for the endpoint with binding WebHttpBinding. Registered base address schemes are [https]. at System.ServiceModel.ServiceHostBase.MakeAbsoluteUri(Uri relativeOrAbsoluteUri, Binding binding, UriSchemeKeyedCollection baseAddresses) at System.ServiceModel.Description.ConfigLoader.ConfigureEndpointAddress(ServiceEndpointElement serviceEndpointElement, ServiceHostBase host, ServiceEndpoint endpoint) at System.ServiceModel.Description.ConfigLoader.ConfigureEndpoint(StandardEndpointElement standardEndpointElement, ServiceEndpointElement serviceEndpointElement, ContextInformation context, ServiceHostBase host, ServiceDescription description, ServiceEndpoint& endpoint, Boolean omitSettingEndpointAddress) at System.ServiceModel.Description.ConfigLoader.LookupEndpoint(ServiceEndpointElement serviceEndpointElement, ContextInformation context, ServiceHostBase host, ServiceDescription description, Boolean omitSettingEndpointAddress) at System.ServiceModel.Web.WebServiceHost.AddAutomaticWebHttpBindingEndpoints(ServiceHost host, IDictionary`2 implementedContracts, String multipleContractsErrorMessage, String noContractErrorMessage, String standardEndpointKind) at System.ServiceModel.Web.WebServiceHost.OnOpening() at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(ServiceActivationInfo serviceActivationInfo, EventTraceActivity eventTraceActivity) at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity) --- End of inner exception stack trace --- at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity) at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath, EventTraceActivity eventTraceActivity) Process Name: w3wp web.config for "api" application:
<?xml version="1.0"?> <configuration> <system.serviceModel> <bindings> <webHttpBinding> <binding name="tinCanBinding" closeTimeout="00:01:00"> </binding> </webHttpBinding> </bindings> <extensions> <behaviorExtensions> <add name="tinCanWebHttp" type="Company.RestService.TinCan.RestConfiguration.TinCanWebHttpBehaviorExtension, Company.RestService" /> <add name="ErrorHandler" type="Company.RestService.ApiErrorHandlerBehavior, Company.RestService" /> </behaviorExtensions> </extensions> <behaviors> <serviceBehaviors> <behavior> <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> <serviceMetadata httpGetEnabled="true"/> <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> <serviceDebug includeExceptionDetailInFaults="true" /> <ErrorHandler /> </behavior> </serviceBehaviors> <endpointBehaviors> <behavior name="tinCanBehavior"> <tinCanWebHttp /> </behavior> </endpointBehaviors> </behaviors> <services> <service name="Company.RestService.TinCan.TinCanService"> <endpoint address="" behaviorConfiguration="tinCanBehavior" bindingConfiguration="tinCanBinding" binding="webHttpBinding" contract="Company.RestService.ServiceContracts.TinCan.ITinCanService"> </endpoint> </service> <service name="Company.RestService.CallBackRestService"> <endpoint address="" binding="wsDualHttpBinding" contract="Company.RestService.ICallBackService"> </endpoint> </service> </services> <standardEndpoints> <webHttpEndpoint> <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="false"> </standardEndpoint> </webHttpEndpoint> </standardEndpoints> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"> <remove name="DSPExceptionModule" /> <remove name="DSPThrottleModule" /> <remove name="DSPTraceModule" /> <remove name="DSPAuthenticationModule" /> <add type="Company.ServiceHttpModule.DSPExceptionModule,Company.ServiceHttpModule" name="DSPExceptionModule" /> <add type="Company.ServiceHttpModule.DSPThrottleModule,Company.ServiceHttpModule" name="DSPThrottleModule" /> <add type="Company.ServiceHttpModule.DSPTraceModule,Company.ServiceHttpModule" name="DSPTraceModule" /> <add type="Company.ServiceHttpModule.DSPAuthenticationModule,Company.ServiceHttpModule" name="DSPAuthenticationModule" /> </modules> </system.webServer> <system.web> <compilation debug="true" /> </system.web> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Common.Logging.Core" publicKeyToken="af08829b84f0328e" culture="neutral" /> <bindingRedirect oldVersion="3.0.0.0-3.4.1.0" newVersion="3.4.1.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration> It looks like it expects "oauth2" to be an application itself which has its own web.config while in just a part of a route. Can you please tell me what needs to be changed in the web.config above to make it work properly?
https://stackoverflow.com/questions/67428487/going-from-http-to-https-getting-could-not-find-a-base-address-that-matches-sc May 07, 2021 at 11:02AM
没有评论:
发表评论