各位高手,小弟最近碰到一个难题,一直无法找到答案。请大家帮忙看一下。
我开发了一个简单的WCF服务,在自己本地的IIS上运行一切正常,可是一上传到我的WEB空间上,就出现错误“Parser Error Message: An extension of name 'clientCredentials' already
appears in extension collection. Extension names must be unique.”
有关具体的错误,大家可以访问:http://taobaotracker.hexniche.com/TaobaoTrackerSvc.svc
联系了空间供应商,了解到在他们的machine.config 里有这样一行设定“<add name="clientCredentials" type="System.ServiceModel.Configuration.ClientCredentialsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />”
我检查了我自己电脑上的machine.confg 和web.config, 是没有这行设定的。但是,一旦我在我的web.config里加入了同用的设定,也会产生同样的错误。
空间供应商不会为了我来修改他们现有的machine.config 里的设定。我现在要如何才能使我的WCF正常工作呢?
小弟这里先谢过了!
假如是你说的这个原因,是CONFIG导致的,你可以在你的WEB.CONFIG里进行删除:
<remove name="clientCredentials" />
这样,就不会有了。
牛牛,谢谢你的回复。
我加了<remove name="clientCredentials" />如下:
<system.serviceModel>
<extensions>
<behaviorExtensions>
<remove name="clientCredentials" />
</behaviorExtensions>
</extensions>
</system.serviceModel>
但是在我的WEB空间里的错误还是一样。但是在本地IIS运行时出现错误:Unrecognized element 'remove'.
这招不管用啊。
@chenwei1107: 难道是配置的.NET版本不一致?确认下.NET的运行版本。
@笨笨蜗牛: 全部在4.0下。我是用VS2010 Express开发的。本地IIS和空间商的IIS也是运行在4.0下。
@chenwei1107:
那就奇怪了。我刚试了,没remove这个指令,同时,DUDU说的CLEAR指令也是不存在的。
System.ServiceModel.Configuration.ClientCredentialsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
这个模块应该是.NET 4.0的标准模块吧?或者你把这个模块也放到你的应用的BIN文件夹中。注意下版本号、PublicKeyToken的区别。
将 <remove name="clientCredentials" /> 改为 <clear /> 试试
<system.serviceModel> <extensions> <behaviorExtensions> <clear /> </behaviorExtensions> </extensions> </system.serviceModel>
貌似这个节点下也没有clear指令
@笨笨蜗牛:
WCF Extensibility – Behavior configuration extensions
ClearBehaviorElement (<clear>): Special extension which removes all inherited behaviors.
@dudu,@笨笨蜗牛:
DUDU,牛牛,谢谢你们的时间,不过所提的方法都没用。