WCF请求失败,HTTP状态为400错误。元数据包含无法解析的引用:http://localhost/MyService.svc/mex

阿勒普克

今天早晨,我遇到了一个有趣的错误,没有在网上找到任何有用的帮助,因此我想在某个地方记录我的解决方案。

我在IIS中托管了一个WCF服务,该服务公开了许多与数据库进行交互的功能(INSERTS,UPDATES,DELETES和SELECTS)。我也有一个使用此服务的网站。在过去的几个星期中,一切工作都很出色,直到昨晚我不得不对数据库进行了相当大的更改。

我的一些表必须重命名,创建新表,在许多表上添加和删除字段,在其他地方拆除和重新创建关系等。幸运的是,我有一些脚本会自动生成与数据库相关的代码(包括SQL语句),所以我真正需要做的就是更新Web服务以使用新的架构,Visual Studio告诉我所有这些位置在哪里,因为它们显示为编译器错误。

通过简单地重命名类型和属性引用以匹配新架构,可以解决许多错误。我还添加了一些方法来公开新表的INSERT,UPDATE和SELECT函数。最终,我完成了所有编译工作,一切似乎都很好。

但是,当我访问网站代码以更新服务参考时,出现了The request failed with http status 400 bad request. Metadata contains a reference that cannot be resolved: http://localhost/MyService.svc/mex错误。客户端或服务器上的web.config文件中没有任何更改。奇怪的是,我仍然可以从浏览器访问端点,它们都工作正常,但是由于某种原因,混合机不喜欢某些东西。由于我的配置没有错,因此Google搜索被证明是没有用的。

阿勒普克

浏览到时http:localhost/MyService.svc,出现以下错误:

An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:
System.InvalidOperationException: An exception was thrown in a call to a WSDL export extension: System.ServiceModel.Description.DataContractSerializerOperationBehavior
 contract: http://tempuri.org/:IAdministrationService ----> System.InvalidOperationException: The IMyService1.UpdatePartner operation references a message element [http://tempuri.org/:UpdatePartner] that has already been exported from the IMyService2.UpdatePartner operation. You can change the name of one of the operations by changing the method name or using the Name property of OperationContractAttribute. Alternatively, you can control the element name in greater detail using the MessageContract programming model.

虽然我确实有两个称为UpdatePartner的函数,但其​​中一个将User_Partner对象作为参数,而另一个将Partner对象(与我的新创建的表之一相对应)引入。本质上,这只是一个重载方法,因此可以在Visual Studio中愉快地进行编译。老实说,我不确定WCF的幕后情况,但我最大的猜测是它将参数转换为某种JSON流,此后这两个函数似乎具有相同的签名。删除其中一项功能可以解决此问题。我以为我也可以重命名,但就我而言,使用User_Partner的版本已过时,不再需要。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档