Yesterday I installed the first server of a Sharepoint Server 2010 farm. The installation went fine but I had problems when I tried to open a site using Sharepoint Designer 2010. Basically I was not able to connect and the Designer didn’t give any explanation. In the event log of the server I found this error:
<Event xmlns=”http://schemas.microsoft.com/win/2004/08/events/event”>
<System>
<Provider Name=”System.ServiceModel 3.0.0.0″ />
<EventID Qualifiers=”49154″>3</EventID>
<Level>2</Level>
<Task>5</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime=”2010-04-24T08:49:47.000000000Z” />
<EventRecordID>2555</EventRecordID>
<Channel>Application</Channel>
<Computer>w3.example.com</Computer>
<Security UserID=”S-X-X-XX-XXXXXXXXX-XXXXXX-XXXXXXXXXX-XXXX” />
</System>
<EventData>
<Data>System.ServiceModel.ServiceHostingEnvironment
+HostingManager/12547953</Data>
<Data>System.ServiceModel.ServiceActivationException: The service
‘/_vti_bin/client.svc’ cannot be activated due to an
exception during compilation. The exception message is:
A binding instance has already been associated to listen
URI ‘http://w3.example.com/_vti_bin/client.svc’. If two
endpoints want to share the same ListenUri, they must also
share the same binding object instance. The two conflicting
endpoints were either specified in AddServiceEndpoint()
calls, in a config file, or a combination of
AddServiceEndpoint() and config. . —>
System.InvalidOperationException: A binding instance has
already been associated to listen URI
‘http://w3.example.com/_vti_bin/client.svc’. If two endpoints
want to share the same ListenUri, they must also share the
same binding object instance. The two conflicting endpoints
were either specified in AddServiceEndpoint() calls, in a
config file, or a combination of AddServiceEndpoint() and
config. at
System.ServiceModel.Description.DispatcherBuilder
.InitializeServiceHost(ServiceDescription description,
ServiceHostBase serviceHost) at
System.ServiceModel.ServiceHostBase.InitializeRuntime() at
System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) at
System.ServiceModel.Channels.CommunicationObject
.Open(TimeSpan timeout) at
System.ServiceModel.ServiceHostingEnvironment
.HostingManager.ActivateService(String normalizedVirtualPath) at
System.ServiceModel.ServiceHostingEnvironment
.HostingManager.EnsureServiceAvailable(String
normalizedVirtualPath)
— End of inner exception stack trace — at
System.ServiceModel.ServiceHostingEnvironment
.HostingManager.EnsureServiceAvailable(String
normalizedVirtualPath) at
System.ServiceModel.ServiceHostingEnvironment
.EnsureServiceAvailableFast(String relativeVirtualPath)
</Data>
<Data>w3wp</Data>
<Data>2956</Data>
</EventData>
</Event>
I was thinking that the WCF tried to bind the client.svc to the same address two time. I found the problem to be in the name used by the server and in the bindings in IIS.
In this installation I’m using a split DNS (eg the internal IP domain is equal to the external IP domain). The FQDN of the server is w3.example.com. The Windows name is W3 and the Windows IP domain is example.com. I bound a web server certificate (principal name is w3.example.com) to the server. Then I defined https://w3.example.com as the main URL of the server and http://w3.example.com and http://w3 as alternate URLs. In the correspondent IIS web site I defined these bindings:
ip address | protocol | virtual server | port |
* | http | 80 | |
* | https | 443 | |
* | http | w3.example.com | 80 |
* | http | w3 | 80 |
There was a conflict between the first (generic) binding and the third binding. The (WCF) client services (and other services, too) try to bind the same endpoint two times.
I solved the problem deleting the first binding.