WCF service behaves differently when called from localhost, why?

M

maciek kanski

Hello

I have running WCF service (config below) hosting in just console
application - because I've used InstanceContextMode.Single and
ConcurrencyMode.Multiple and no Throttling I expect that 10 simultaneous
requests will create 10 threads. Indeed it's true when calling service from
the same machine - from localhost.

However making remote call to exactly the same instance of service will
cause ServiceHost to give _only_ 2 threads to process requests; so in one
time only two threads is working and 8 requests are waiting.

I haven't found how to distinguish configuration wheter it's remote or not.

My service just sleeps for several seconds, framework 3.5B2, Vista 64, Intel
2 Duo

<system.serviceModel>
<services>
<service behaviorConfiguration="myBehConfig"
name="MySampleService.MySampleServiceImp">
<endpoint address="http://localhost:6001/MyService"
behaviorConfiguration=""
binding="basicHttpBinding"
name="HttpEndpoint"
contract="MySampleService.MySampleContract1"
/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="myBehConfig">
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>


Thanks for any information.
 
N

Nicholas Paldino [.NET/C# MVP]

maciek,

This is a guess, but I am guessing that http.sys (the service side) or
the client proxy is determining that the request is from the local client
machine, and not placing a limit on the number of connections.

From what I recall, however, the HTTP specification says that only two
connections should be made at a time to a domain, and that could be why you
see only two requests processed at the same time.

If you change the binding to use tcpip, do you still see the same
behavior?
 
M

maciek kanski

If you change the binding to use tcpip, do you still see the same
behavior?
Well, netTcpBinding works as expected. So I'll try to live without
basicHttpBinding (and probably other bindings dependent on http.sys as You
said)

Thanks Nicholas for help.
 
N

Nicholas Paldino [.NET/C# MVP]

maciek,

It's not anything that depends on http.sys. I mentioned that because it
is used on the server side by services that use the http bindings which are
not hosted in IIS. It should be any binding that uses HTTP as a transport
protocol.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top