Tuesday, June 15, 2010 3:22 PM
I'm hosting a WCF service in IIS7 on Windows Server 08, sp2. The service is hosted as its own website and is exposed via a NET.TCP endpoint. The service works perfectly until a restart/iisreset command is issued.
After restart or iisreset, when I make any service call, I receive the following error:
'System.ServiceModel.EndpointNotFoundException: The message could not be dispatched because the service at the endpoint address 'net.tcp://[website]/[service_name].svc' is unavailable for the protocol of the address.. '.
The server's event log shows the following error:
'An error occurred while trying to read and instantiate the configured ProcessHandlerType.
Message: Unknown protocol ID 'NET.TCP'.
StackTrace: at System.Web.Hosting.ProcessHost.StartProcessProtocolListenerChannel(String protocolId, IListenerChannelCallback listenerChannelCallback) '
How do I fix this? Why is the NET.TCP protocol disabled after iisreset? Is it a bug? Am I missing some configuration?
I can get it working again if (1) I remove NET.TCP from the site's EnabledProtocols (2) iisreset (3) add NET.TCP back to the site's EnabledProtocols. The site continues to work until iisreset is issued again.
IIS setup details:
- Bindings: http, NET.TCP (808:*)
- EnabledProtols: http,NET.TCP.
- The identity for the site's appPool is set to a specific user.
Tuesday, June 29, 2010 7:51 PM
Solved. The problem is case-sensitivity. In the AdvancedSettings of the web application, the EnabledProtocols field must be lower case ie 'net.tcp' (I just learned this from MS support). I assumed (foolishly) that 'NET.TCP' should be upper case because of the description of the EnabledProtocols field ("...add those values, such as NET.TCP...").
The strange, unknown issue is why it would work with 'NET.TCP' the first time, but that's another issue.
- Marked As Answer by Laura ZhangMicrosoft Employee, Administrator Thursday, July 01, 2010 1:34 PM