WCF 16384 max array length - arrays

Been trying to solve this for a day. I cant seen to find any error with my code, please help. Thank you!
I'm using IIS to host the Service and used add service reference for the client.
I have made sure that I added readerquota and correct binding configuration. Still, the error occur when i'm sending image file with size over 16384kb.
Server
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ICotfServerWCF" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="20000000" maxBufferPoolSize="20000000" maxReceivedMessageSize="20000000"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32"
maxStringContentLength="5242880"
maxArrayLength="2147483646"
maxBytesPerRead="4096"
maxNameTableCharCount="5242880" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="ServerWCF.ICotfServerWCF">
<endpoint address="http://192.168.2.140:8081/CotfServerWCF.svc" binding="basicHttpBinding" behaviorConfiguration="filebehavior" name="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ICotfServerWCF" contract="ServerWCF.ICotfServerWCF" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="filebehavior">
<dataContractSerializer maxItemsInObjectGraph="2000000000"/>
</behavior>
</endpointBehaviors>
<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"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<connectionStrings>
<add name="databaseCS" connectionString="Data Source=(local);Initial Catalog=CotfDatabase;User ID=CotfDbUser; Password=$ing1234;"/>
</connectionStrings>
</configuration>
Client
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_Client" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="6553600" maxBufferPoolSize="5242880" maxReceivedMessageSize="6553600"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="100000"
maxBytesPerRead="4096" maxNameTableCharCount="100000" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://192.168.2.140:8081/CotfServerWCF.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Client"
contract="ServerWCF.ICotfServerWCF" name="BasicHttpBinding_ICotfServerWCF" >
</endpoint>
</client>
</system.serviceModel>
</configuration>
I have figured out the issue, after I updated my server and client to the right values and right binding. My client is still sending default configuration. Also, the configuration.svcinfo file is still in default value and not updated. Any ideas?

Do you change quotas config both server and client side.

First are you sure that you have set your HttpRuntime to be more than 4MB. You can do it as shown below:
<httpRuntime maxRequestLength="1572864"/>
The above element is under system.web element. The .NET framework's http runtime doesnt allow data more than 4MB by default.
Your reader quotas on the server and client are a bit different. Make sure that you have the client reader quotas same as that of the server.
Once you have the above and you still have problems then try enabling Tracing on your service and it should tell you the exact reason why your request is failing. To enable tracing follow the article here

The client should also get a behaviorConfiguration that sets the maxItemsInObjectGraph
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="ServiceBehavior">
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</endpointBehaviors>
</behaviors>
Then.. reference this new behavior on your client endpoint...
<endpoint address="http://youraddresshere"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
contract="" name="" behaviorConfiguration="ServiceBehavior" />
You could also try increasing your maxBytesPerRead="" value in your client and service settings.

Related

Trouble with endpoints of my wcf

My WCF service web.config.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="ZesdaagseResultsContext" connectionString="Data Source=194.33.112.88\partywhere;Initial Catalog=ZesdaagseResults;Persist Security Info=True;User ID=*********;Password=******************/;MultipleActiveResultSets=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.serviceModel>
<services>
<service name="WcfOpzet.MobileService" behaviorConfiguration="MexBehavior">
<endpoint binding="webHttpBinding" contract="WcfOpzet.IMobileService" behaviorConfiguration="webHttpBehavior" />
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MexBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="webHttpBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
<system.web>
<compilation debug="true" />
</system.web>
</configuration>
My wcf client MobileServiceReference.ClientConfig.
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="webHttpBinding"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://zesdaagse.mobi-app.be/WCFUrl/MobileService.svc"
binding="basicHttpBinding"
bindingConfiguration="webHttpBinding"
contract="MobileService.IMobileService"
name="webHttpBinding"
/>
</client>
<!--<behaviors>
<endpointBehaviors>
<behavior name="webHttpBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>-->
</system.serviceModel>
</configuration>
My Error when I run my Windows Phone Application.
There was no endpoint listening at http://zesdaagse.mobi-app.be/WCFUrl/MobileService.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
Explanation
I searched but I don't get it fixed. There is something wrong with my endpoints but I don't know what.
Ah, now I see it
You are using the basicHttpBinding in your client and the webHttpBinding (REST) in your service... That's probably the reason why it's not working, no?
Extra FYI: I tried to call your service myself and now I get a 405, which probably means you didn't specify the [WebGet] or [WebInvoke] attributes to your service operations.
With the following client side config, you should be able to call your service (after attributing your operations with WebGet)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="webHttpBinding"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</webHttpBinding>
</bindings>
<client>
<endpoint address="http://zesdaagse.mobi-app.be/WCFUrl/MobileService.svc"
binding="webHttpBinding"
bindingConfiguration="webHttpBinding"
contract="MobileService.IMobileService"
name="webHttpBinding"
behaviorConfiguration="webHttpBehavior"
/>
</client>
<behaviors>
<endpointBehaviors>
<behavior name="webHttpBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
</configuration>

WCF: Server responding with Bad Request (400)

My WCF client works OK with WCF server except when making a call to the server trying to pass array of custom objects. When the array is 100 items it works fine, but when number of items is 300 the server throws exception Bad Request (400). So I assume that the key to the solution is in configuration files.
First of all here is the app.config for the client. The WCF client resides in a DLL which is Outlook Add-In. I copy this app.config to Outlook.exe.config to Outlook installation dir - something that is required for the Add-In to be loaded by Outlook:
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MyProject.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<system.serviceModel>
<bindings>
<wsDualHttpBinding>
<binding name="WSDualHttpBinding_IJabberSvc" closeTimeout="00:01:00" openTimeout="00:02:00" receiveTimeout="00:10:00" sendTimeout="00:05:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" />
<security mode="Message">
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsDualHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:9047/switchvox/alerter" binding="wsDualHttpBinding"
bindingConfiguration="WSDualHttpBinding_IJabberSvc" contract="JabberService.IJabberSvc"
name="WSDualHttpBinding_IJabberSvc">
</endpoint>
</client>
</system.serviceModel>
<system.diagnostics>
<trace autoflush="true" />
<sharedListeners>
<add name="sharedListener"
type="System.Diagnostics.XmlWriterTraceListener" initializeData="%AppData%\Mfg\ProjectName\Logs\SwitchvoxDialerTraceLog.svclog" />
</sharedListeners>
<sources>
<source name="System.ServiceModel"
switchValue="Verbose, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="sharedListener"/>
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging" switchValue="Verbose">
<listeners>
<add name="sharedListener" />
</listeners>
</source>
</sources>
</system.diagnostics>
<userSettings>
<SwitchvoxDialer.Properties.Settings>
<setting name="InstallSubFolder" serializeAs="String">
<value>Mfg\\ProjectName</value>
</setting>
<setting name="DialerTitle" serializeAs="String">
<value>ProjectName</value>
</setting>
</SwitchvoxDialer.Properties.Settings>
</userSettings>
</configuration>
The relevant part of the server config looks like this:
<system.serviceModel>
<services>
<service name="WcfServiceLib.JabberSvc" behaviorConfiguration="JabberSvc">
<endpoint address="http://localhost:9047/switchvox/alerter" binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_IJabberSvc" contract="WcfServiceLib.IJabberSvc" name="WSDualHttpBinding_IJabberSvc">
<identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="http://localhost:9047/switchvox/alerter"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="JabberSvc">
<dataContractSerializer ignoreExtensionDataObject="true" maxItemsInObjectGraph="2147483646" />
<serviceTimeouts transactionTimeout="00:10:00" />
<!-- 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"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsDualHttpBinding>
<binding name="WSDualHttpBinding_IJabberSvc" closeTimeout="00:01:00" openTimeout="00:02:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647"/>
<reliableSession ordered="true" inactivityTimeout="00:10:00"/>
<security mode="Message">
<message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default"/>
</security>
</binding>
</wsDualHttpBinding>
</bindings>
<!-- Enable message tracing by adding this section - Remove for production code -->
<diagnostics>
<messageLogging logEntireMessage="true" logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true"
maxMessagesToLog="100000" />
</diagnostics>
</system.serviceModel>
The app.config produces ServerName.exe.config that in bin/Debug (previously I had it as embedded resource but it did not help either...
As you can see I increased all the numbers for buffers, messages, etc. to maximum and made sure that the time values are high enough... I am convinced that that the problem is that somehow either the server or the client do not know about these increased values, but cant figure out why...
Try message encoding with MTOM. See the following links for more info:
http://msdn.microsoft.com/en-us/library/ms733742.aspx
and
http://msdn.microsoft.com/en-us/library/aa395209.aspx
If that doesn't work, use Fiddler to get more information on the error.
A 400-bad request can mean a lot of things.
WCF does not return/show lot of information about what's actually wrong in its side (sad). Try configuring WCF Tracing and see if it helps.

adding behaviorConfiguration causes (415) Unsupported Media Type.HTTP GET Error

When I add in behaviorConfiguration I get the following from wcftester
The remote server returned an error: (415) Unsupported Media Type.HTTP GET Error
service web.config
<system.serviceModel>
<services>
<service behaviorConfiguration="MaxConfig" name="MyRemoteHostService">
<endpoint address="" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_MyRemoteHostService"
contract="My.Framework.Web.MyRemoteHostService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false"
multipleSiteBindingsEnabled="true" />
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_MyRemoteHostService"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647">
<readerQuotas
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxDepth="2147483647"
maxNameTableCharCount="2147483647"
maxStringContentLength="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="MaxConfig">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
ServiceReferences.ClientConfig
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_MyRemoteHostService" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<endpoint address="http://localhost:2622/MyRemoteHostService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_MyRemoteHostService"
contract="MyServiceReference.MyRemoteHostService" name="BasicHttpBinding_MyRemoteHostService" />
</client>
</system.serviceModel>
Error:
Cannot obtain Metadata from
http://localhost:2622/MyRemoteHostService.svc If this is a Windows (R)
Communication Foundation service to which you have access, please
check that you have enabled metadata publishing at the specified
address
The remote server returned an error: (415) Unsupported Media Type.HTTP
GET Error URI: http://localhost:2622/MyRemoteHostService.svc The
HTML document does not contain Web service discovery information.
I got a 415 error message took me more than a day to find the cause, turns out that our web.config on the server is different to dev, it specifies a different binding which means the binding is different between the client (SL) and the wcf service on the server which seems to cause a 415 message (kinda makes sense). Your bindings above look correct, could be worth re-checking. Have you tried updating the service reference after adding the behaviorConfiguration, sometimes it works. Unfortunately HTTP error codes can be very misleading at times...

WCF Error Not Found with large objects

I am having an issue with a WCF service call. The service takes a complex object that has many lists of objects inside of it. The problem occurs when the object gets too large. I am getting a communication exception that says Not Found. The call works as long as the item is not too large. Any help would be appreciated. Here is the relevant part of the client config file:
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ICartService" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="../Services/CartService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ICartService"
contract="AccessPoint.RichClient.Wcf.ICartService"
name="BasicHttpBinding_ICartService" />
</client>
The web.config file has the following content:
<bindings>
<basicHttpBinding>
<binding name="basicHttpLargeMessage" closeTimeout="00:02:00"
openTimeout="00:02:00" receiveTimeout="00:10:00" sendTimeout="00:02:00"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="CartService.CartServiceBehavior"
name="AccessPoint.WcfServices.CartService">
<endpoint address="" behaviorConfiguration="CartServiceBehavior"
binding="basicHttpBinding" bindingConfiguration="basicHttpLargeMessage"
contract="AccessPoint.WcfServices.ICartService" />
</service>
<behaviors>
<serviceBehaviors>
<behavior name="CartService.CartServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph ="2147483647"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="CartServiceBehavior">
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</endpointBehaviors>
</behaviors>
Any server error will be reflected in Silverlight as a "Not Found" exception. You need to either use some network sniffing tool (such as Fiddler) to see if the response has some additional information about the error, or enable tracing at the server side to see why it's returning a non-successful response.
The post at http://blogs.msdn.com/b/silverlightws/archive/2010/09/23/debugging-wcf-services-in-silverlight.aspx has a video with lots of information about debugging WCF services in Silverlight.

Silverlight 4 - Configure Self-Hosted WCF Service to use SSL

I have a Silverlight 4 application that uses WCF services on the same server (self-hosted). Everything works fine, but now I want to convert my WCF services to use SSL. I am using CustomBindings and can't quite find the combination to get this done. I am using relative URLs on the client side, and hope this is not causing a problem. Here are the important bits of my Web.config file:
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="6553600"/>
<serviceTimeouts transactionTimeout="00:10:00"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name="MyApp.Web.Services.ProjectService.customBinding0"
receiveTimeout="00:10:00" sendTimeout="00:10:00">
<binaryMessageEncoding />
<httpsTransport maxReceivedMessageSize="2147483647" />
</binding>
</customBinding>
</bindings>
<services>
<service name="MyApp.Web.Services.ProjectService">
<endpoint address="" binding="customBinding" bindingConfiguration="MyApp.Web.Services.ProjectService.customBinding0"
contract="MyApp.Web.Services.ProjectService" />
</service>
My ClientConfig looks like this:
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="CustomBinding_ProjectService">
<binaryMessageEncoding />
<httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="../Services/ProjectService.svc" binding="customBinding"
bindingConfiguration="CustomBinding_ProjectService" contract="SearchProxy.ProjectService"
name="CustomBinding_ProjectService" />
</client>
</system.serviceModel>
</configuration>
I just don't understand how the bindings work in both the server and client. I'm hoping someone can point me in the right direction.
A few things:
If you want to use SSL on localhost you'll need to be using IIS Express 7.5 (or full IIS if you're on a server doing dev - unlikely).
You'll need a clientaccesspolicy.xml file stored in the root of the Web application:
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers= "SOAPAction">
<domain uri="https://*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
Example server-side Web.config:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="SecureBasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="SomeBehavior" >
<serviceMetadata httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<useRequestHeadersForMetadataAddress>
<defaultPorts>
<add scheme="https" port="443" />
</defaultPorts>
</useRequestHeadersForMetadataAddress>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment>
<serviceActivations>
<add relativeAddress="SomeService.svc" service="MySilverlight.Web.SomeService"/>
</serviceActivations>
</serviceHostingEnvironment>
<services>
<service name="MySilverlight.Web.SomeService"
behaviorConfiguration="SomeBehavior">
<endpoint address="SomeService"
binding="basicHttpBinding"
bindingConfiguration="SecureBasicHttpBinding"
bindingNamespace="https://MySilverlight.Web.SomeService"
contract="MySilverlight.Web.ISomeService">
</endpoint>
<endpoint address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
Example client-side:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ISomeService" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="Transport" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://localhost/SomeService.svc/SomeService"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISomeService"
contract="MySilverlight.Web.SomeServiceReference.ISomeService"
name="BasicHttpBinding_ISomeService" />
</client>
<extensions />
</system.serviceModel>
</configuration>
IIS 7.5 will setup your localhost certificate automatically.
Can you update the service reference on the client project? That should update the clientconfig file with the correct binding. One thing I am noticing right now is that you're using <httpTransport> on the client binding and <httpsTransport> on the service. Try changing the client to use <httpsTransport> as well.
Also, if your SL app is downloaded from an HTTP:// address, then a call to a service in HTTPS is considered to be a cross-domain call, so you'll need a cross-domain policy file as well.

Resources