We have working ASP.Net web application with WCF. wcf service hosted as a windows service. All is fine. Then we made a change so that service contract will have different namespace (From Namespace1.IserviceContract to Namespace2.IserviceContract). After the change we deployed to the server and getting following error when we try to instantiate the service object.
我们与WCF一起使用ASP.Net Web应用程序。作为Windows服务托管的wcf服务。一切皆好。然后我们进行了更改,以便服务契约具有不同的命名空间(从Namespace1.IserviceContract到Namespace2.IserviceContract)。在我们尝试实例化服务对象后,我们部署到服务器并获得跟随错误。
System.InvalidOperationException: An endpoint configuration section for contract 'Namespace2.IserviceContract' could not be loaded because more than one endpoint configuration for that contract was found. Please indicate the preferred endpoint configuration section by name.
Generated: Fri, 06 Jul 2012 21:02:56 GMT
System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.InvalidOperationException: An endpoint configuration section for contract 'Namespace2.IserviceContract' could not be loaded because more than one endpoint configuration for that contract was found. Please indicate the preferred endpoint configuration section by name.
at System.ServiceModel.Description.ConfigLoader.LookupChannel(String configurationName, String contractName, Boolean wildcard)
at System.ServiceModel.Description.ConfigLoader.LoadChannelBehaviors(ServiceEndpoint serviceEndpoint, String configurationName)
at System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName, Configuration configuration)
at System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName)
at System.ServiceModel.ChannelFactory.InitializeEndpoint(String configurationName, EndpointAddress address)
at System.ServiceModel.ChannelFactory`1..ctor(String endpointConfigurationName, EndpointAddress remoteAddress)
at System.ServiceModel.EndpointTrait`1.CreateSimplexFactory()
at System.ServiceModel.EndpointTrait`1.CreateChannelFactory()
at System.ServiceModel.ClientBase`1.CreateChannelFactoryRef(EndpointTrait`1 endpointTrait)
at System.ServiceModel.ClientBase`1.InitializeChannelFactoryRef()
at System.ServiceModel.ClientBase`1..ctor()
at TestApplication.ManagementWrapper.VerifyAuthentication(Int32 appId, String Token)
at TestApplication.VerifyAuthentication(String tokenstring)
we did a research about this issue and found that this type if exception shows up if we have two client endpoints defined in our web.config file. however we are certain that we have only one client endpoint defined. More over this exception shows up only in the server. local works fine. here is our service model:
我们对此问题进行了研究,发现如果我们在web.config文件中定义了两个客户端端点,则会出现此类型的异常。但我们确信我们只定义了一个客户端点。此异常的更多内容仅在服务器中显示。当地工作正常。这是我们的服务模式:
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="NetTcpBinding_Management" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="4194304" maxBufferSize="2147483647" maxConnections="10" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="32768" maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
<security mode="None" />
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://servername:9010/Management/service/ManagementService" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_Management" contract="Namespace2.IserviceContract" name="NetTcpBinding_IserviceContract" />
</client>
</system.serviceModel>
we also tried to restart IIS and application pool. Still getting the same exception.
我们还尝试重新启动IIS和应用程序池。仍然得到相同的例外。
4 个解决方案
#1
23
Try searching your web.config for another that is using the web address as your ManagementService. Also, search the web.config for any reference to the old namespace (contract="Namespace1.IserviceContract"). Don't forget to check for extra .config files. That little gotcha has burned me before.
尝试在web.config中搜索使用Web地址作为ManagementService的另一个。另外,在web.config中搜索对旧命名空间的任何引用(contract =“Namespace1.IserviceContract”)。不要忘记检查额外的.config文件。那个小小的骗局以前烧过我。
#2
3
Whatever protocol is being called like basic, net.tcp or wshttp, that address should be in web config file remove other addresses from client section in app.config file, in my case i am calling the service as htp://machinename:700/test.svc but in the client section there were addresses with net.tcp and wshttp configurations, removed those addresses and issue is fixed for me.
无论调用什么协议,如basic,net.tcp或wshttp,该地址应该在web配置文件中从app.config文件中的客户端部分删除其他地址,在我的情况下,我将服务称为htp:// machinename:700 /test.svc但在客户端部分有net.tcp和wshttp配置的地址,删除了那些地址,问题对我来说是固定的。
#3
0
Please right click on svc file of your wcf service and click on View markup.
请右键单击wcf服务的svc文件,然后单击View markup。
then modify namespace there also. It should work fine then.
然后还修改名称空间。它应该工作正常。
#4
0
If everything in your web.config appears to be correct, this error can be caused by another application on the same server. I spent several days troubleshooting a similar issue.
如果web.config中的所有内容看起来都是正确的,则此错误可能是由同一服务器上的另一个应用程序引起的。我花了几天时间来解决类似的问题。
In my case, the environment had a large number of WCF services deployed as web applications in IIS under a single website as follows.
就我而言,环境中有大量WCF服务作为Web应用程序部署在单个网站下的IIS中,如下所示。
/Root Website
/Service1
/Service2
/Service3
/ServiceX
One of the child services was mistakenly deployed to the root website physical folder rather than to it's own physical folder. This bad deployment contained a client endpoint definition that was common to all of the services and caused all of the child services to break. Apparently, the same client endpoint cannot be used by the parent website and a child web application.
其中一个子服务被错误地部署到根网站物理文件夹而不是它自己的物理文件夹。此错误部署包含一个客户端端点定义,该定义对所有服务都是通用的,并导致所有子服务中断。显然,父网站和子Web应用程序不能使用相同的客户端端点。
Removing the client endpoint from the root website fixed the issue for me.
从根网站删除客户端端点为我解决了问题。
#1
23
Try searching your web.config for another that is using the web address as your ManagementService. Also, search the web.config for any reference to the old namespace (contract="Namespace1.IserviceContract"). Don't forget to check for extra .config files. That little gotcha has burned me before.
尝试在web.config中搜索使用Web地址作为ManagementService的另一个。另外,在web.config中搜索对旧命名空间的任何引用(contract =“Namespace1.IserviceContract”)。不要忘记检查额外的.config文件。那个小小的骗局以前烧过我。
#2
3
Whatever protocol is being called like basic, net.tcp or wshttp, that address should be in web config file remove other addresses from client section in app.config file, in my case i am calling the service as htp://machinename:700/test.svc but in the client section there were addresses with net.tcp and wshttp configurations, removed those addresses and issue is fixed for me.
无论调用什么协议,如basic,net.tcp或wshttp,该地址应该在web配置文件中从app.config文件中的客户端部分删除其他地址,在我的情况下,我将服务称为htp:// machinename:700 /test.svc但在客户端部分有net.tcp和wshttp配置的地址,删除了那些地址,问题对我来说是固定的。
#3
0
Please right click on svc file of your wcf service and click on View markup.
请右键单击wcf服务的svc文件,然后单击View markup。
then modify namespace there also. It should work fine then.
然后还修改名称空间。它应该工作正常。
#4
0
If everything in your web.config appears to be correct, this error can be caused by another application on the same server. I spent several days troubleshooting a similar issue.
如果web.config中的所有内容看起来都是正确的,则此错误可能是由同一服务器上的另一个应用程序引起的。我花了几天时间来解决类似的问题。
In my case, the environment had a large number of WCF services deployed as web applications in IIS under a single website as follows.
就我而言,环境中有大量WCF服务作为Web应用程序部署在单个网站下的IIS中,如下所示。
/Root Website
/Service1
/Service2
/Service3
/ServiceX
One of the child services was mistakenly deployed to the root website physical folder rather than to it's own physical folder. This bad deployment contained a client endpoint definition that was common to all of the services and caused all of the child services to break. Apparently, the same client endpoint cannot be used by the parent website and a child web application.
其中一个子服务被错误地部署到根网站物理文件夹而不是它自己的物理文件夹。此错误部署包含一个客户端端点定义,该定义对所有服务都是通用的,并导致所有子服务中断。显然,父网站和子Web应用程序不能使用相同的客户端端点。
Removing the client endpoint from the root website fixed the issue for me.
从根网站删除客户端端点为我解决了问题。