This is a migrated thread and some comments may be shown as answers.

Enable SSL for Telerik Reporting WCF service

11 Answers 550 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
Sandi Markon
Top achievements
Rank 1
Sandi Markon asked on 10 Nov 2010, 09:08 AM
Hello,
 
I've tried everything, but Telerik Reporting Service doesn't work via HTTPS (SSL) protocol! Did anybody tried this configuration in practice? I'm not the only one, read discusion about this problem here: Silverlight forums
 
Our company is in decision phase which reporting system to use in Silverlight LOB applications and this problems may affect our choice ...

Best regards
 
 
 

11 Answers, 1 is accepted

Sort by
0
Sandi Markon
Top achievements
Rank 1
answered on 10 Nov 2010, 09:32 AM
Might help you, Silverlight Report Viewer displays following exception: "An exception occurred during the operation, making the result invalid. Check InnerException for exception details."
0
Massimiliano Bassili
Top achievements
Rank 1
answered on 10 Nov 2010, 09:58 AM
Telerik Reporting DOES work with HTTPS protocol and you can see this in the online report examples: Online demos. Besides me, even in the Silverlight forum you referenced, I see users that are successfully running Telerik Reports under SSL like John.
It is also insulting to ask whether something that is present into the documentation has been tested, your "question" sound more like a statement that does not expect an answer.
It doesn't look like you're posting much in forums, as you're missing their point. We try to help each other, coming here and pointing fingers in your first forum post without reason would not exactly bring the welcome committee either from Telerik or Telerik "advocates" such as me. Hope you understand what I'm talking about .. if you don't too bad.. now with the helping part ...

The exception you've received needs to be traced further as it is generic one.
Do the following:

  • bring to front the Output window in VS and look for an exception when you're running your application in debug mode.
  • try accessing the .svc file directly in your browser. If there is a problem with the service, it would bring more user friendly message.
  • enable the CLR exceptions in VS (Debug --> Exceptions) and run your project in debug mode.

If none of the above helps (which should not if you've done it right), you can work directly with the locally installed samples that are installed with Telerik Reporting. Open the VS examples, navigate to the Silverlight project, host it on your dev machine IIS and enable IIS following the respective help article.


Cheers!
0
Sandi Markon
Top achievements
Rank 1
answered on 10 Nov 2010, 10:37 AM
Massimiliano,

obviously I was misunderstooded, I'm not pointing finger to anybody, my posts was too sharp - sorry about that, I appreciate your help!
When I try to access .svc file directly in my browser followin exception occurs:

Stack trace:

[InvalidOperationException: Could not find a base address that matches scheme http for the endpoint with binding MetadataExchangeHttpBinding. Registered base address schemes are [https].] System.ServiceModel.ServiceHostBase.MakeAbsoluteUri(Uri relativeOrAbsoluteUri, Binding binding, UriSchemeKeyedCollection baseAddresses) +16394417 System.ServiceModel.Description.ConfigLoader.LoadServiceDescription(ServiceHostBase host, ServiceDescription description, ServiceElement serviceElement, Action`1 addBaseAddress) +1082 System.ServiceModel.ServiceHostBase.ApplyConfiguration() +156 System.ServiceModel.ServiceHostBase.InitializeDescription(UriSchemeKeyedCollection baseAddresses) +215 System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses) +475 System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(Type serviceType, Uri[] baseAddresses) +43 System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) +514 System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath) +1423 System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +50 System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +1132 [ServiceActivationException: The service '/SOP/ReportService.svc' 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 MetadataExchangeHttpBinding. Registered base address schemes are [https]..] System.Runtime.AsyncResult.End(IAsyncResult result) +890624 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +180062 System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar) +136

My current Web.config file content:

<configuration>
  <system.web>
<customErrors mode="Off"/>
    <httpModules>
      <add name="DomainServiceModule" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </httpModules>
    <trace enabled="true" localOnly="false" />
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>
    <authentication mode="Forms">
      <forms timeout="30" />
    </authentication>
    <profile enabled="true">
      <properties>
        <clear/>
        <add name="FriendlyName" />
      </properties>
    </profile>
    <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" connectionStringName="LocalSQLServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" type="System.Web.Security.SqlMembershipProvider" />
      </providers>
    </membership>
    <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
      <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" connectionStringName="LocalSQLServer" applicationName="/" type="System.Web.Security.SqlRoleProvider" />
      </providers>
    </roleManager>
  </system.web>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="DomainServiceModule" preCondition="managedHandler" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </modules>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBindingConfig" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None" realm="">
<extendedProtectionPolicy policyEnforcement="Never" />
</transport>
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
      </basicHttpBinding>
      <webHttpBinding>
        <binding name="WebHttpBindingConfig">
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ReportServiceBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="WebBehavior">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <!-- Telerik Reporting -->
    <services>
      <service name="Telerik.Reporting.Service.ReportService" behaviorConfiguration="ReportServiceBehavior">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBindingConfig" contract="Telerik.Reporting.Service.IReportService"/>
        <endpoint address="resources" binding="webHttpBinding" bindingConfiguration="WebHttpBindingConfig" behaviorConfiguration="WebBehavior" contract="Telerik.Reporting.Service.IResourceService"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
  </system.serviceModel>
</configuration>

ASP.net authentications and WCF RIA services works ok, only reporting service causes problems. Any idea what is wrong with this  configuration?

Best regards
0
Sandi Markon
Top achievements
Rank 1
answered on 10 Nov 2010, 11:32 AM
Hello,

I finally found solution! If I change following attributes in Web config file founded documentation Enable SSL for Telerik Reporting WCF service everything works without problems ...

I've changed:

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

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

and
<behavior name="ReportServiceBehavior">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
</behavior>

to
<behavior name="ReportServiceBehavior">
        <serviceMetadata httpsGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
</behavior>

After this two modifications Telerik Reporting Service works via SSL like charm! I hope this helps to someone else ...

Best regards


0
Massimiliano Bassili
Top achievements
Rank 1
answered on 10 Nov 2010, 11:43 AM
That's the spirit! You see, being calm and following carefully the documentation does pay off. Now go tell the other guys in the Silverlight forum how you've got it working to avoid misinformation that Telerik Reporting has problems with SSL ..

Cheers!
0
Sandi Markon
Top achievements
Rank 1
answered on 10 Nov 2010, 12:00 PM
I've posted information on Silverlight forum too, and I hope that documentation for this issue will be updated to avoid misinformations in the future ...

Best Regards!
0
Massimiliano Bassili
Top achievements
Rank 1
answered on 15 Nov 2010, 10:38 AM
Sandi, most likely your IIS setup has some configurations that differ, as on my web app, I did not have to make your changes and it still works with SSL. It seems to me that there is a lot more to know as background for SSL and the provided system.serviceModel markup in the documentation only covers the default setup. After all, I think one should know of different setups when aiming for SSL.

Cheers!
0
MiddleTommy
Top achievements
Rank 1
answered on 21 Dec 2010, 07:30 PM
Thanks for your rant. I had the same trouble.
All was working fine until I removed the http binding in the iis config because I was not using it (or so I thought).
0
Ed
Top achievements
Rank 1
answered on 23 Jun 2011, 11:50 AM
Hello all,

I've been having a lot of problems with doing this.

I started off with a fully working Silverlight Telerik ReportViewer/WCF service on HTTP, but it was a requirement to secure it with SSL.
So I copied EXACTLY the web.config section on this Telerik support page
http://www.telerik.com/help/reporting/silverlight-enable-ssl-for-telerik-reporting-wcf-service.html

Then I changed my ReportServiceUri to a https address.

But without success. Here is where I am at:
- The Report Service WCF runs fine over SSL  accessible from IE and from Microsoft WCF test client.
- My Silverlight Report.xaml is pointing to the same URI that I'm testing through IE (see below - sorry I'm not allowed to hand out our server address for obvious reasons!) but it still fails.


<UserControl xmlns:my="clr-namespace:Telerik.ReportViewer.Silverlight;assembly=Telerik.ReportViewer.Silverlight"  x:Class="TelerikReporting.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:telerik="clr-namespace:Telerik.ReportViewer.Silverlight;assembly=Telerik.ReportViewer.Silverlight"    
    xmlns:telerikNav="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Navigation"
    xmlns:telerikControls="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls"
    xmlns:telerikPrimitives ="clr-namespace:Telerik.Windows.Controls.Primitives;assembly=Telerik.Windows.Controls"
    xmlns:telerikInput="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Input"  
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="402" d:DesignWidth="807">

    <Grid x:Name="LayoutRoot" Background="White">
        <my:ReportViewer x:Name="ReportViewer1"  ReportServiceUri="https://MY_URL/Portal.Reporting.Services/ReportService.svc" Loaded="ReportViewer1_Loaded" RenderBegin="ReportViewer1_RenderBegin"  BindingValidationError="ReportViewer1_BindingValidationError"   />
      </Grid>
</UserControl>


I can confirm if I change the bindings from <security mode="Transport"/> to <security mode="None"/> and URI to http:, it all works again, but I really need to secure it. 

I am very puzzled, I have been stuck on this problem for a number of days, so I hope someone out there can help or offer some suggestions.
0
Jeff Waddell
Top achievements
Rank 1
answered on 22 Jul 2011, 03:54 PM
After wrestling with this for HOURS,

1. Change the endpoint address="mex" binding from mexHttpBinding to mexHttpsBinding

2. behavior name="ReportServiceBehavior">

serviceMetadata httpsGetEnabled="true" />

0
Kenneth
Top achievements
Rank 1
answered on 09 Apr 2014, 01:47 PM
[quote]Massimiliano Bassili said:Sandi, most likely your IIS setup has some configurations that differ, as on my web app, I did not have to make your changes and it still works with SSL. It seems to me that there is a lot more to know as background for SSL and the provided system.serviceModel markup in the documentation only covers the default setup. After all, I think one should know of different setups when aiming for SSL.[/quote]

I suspect this is because your server does not require SSL, so HTTP traffic is allowed, in my case I require SSL so I needed to do the fix of adding the 's' in the two configurations as indicated.  It was maddening because the online documentation on how to enable SSL in reporting does not mention this tweak (unless I just missed it). 
Tags
General Discussions
Asked by
Sandi Markon
Top achievements
Rank 1
Answers by
Sandi Markon
Top achievements
Rank 1
Massimiliano Bassili
Top achievements
Rank 1
MiddleTommy
Top achievements
Rank 1
Ed
Top achievements
Rank 1
Jeff Waddell
Top achievements
Rank 1
Kenneth
Top achievements
Rank 1
Share this question
or