Chr*_*ian 5 .net c# wcf silverlight-5.0 visual-studio-2012
我有一个Silverlight应用程序,它通过WCF服务与服务器端的ADO.Net数据实体进行通信.实际上,我使用多个WCF服务与三个不同的数据ADO.Net数据实体进行通信.我最初在Visual Studio 2010上构建了这个项目,最近大约一周前转移到了Visual Studio Professional 2012(试用版).最初工作/移植的一切都很好,直到大约一小时前,我对服务没有任何问题.不到一小时前,我在我的代码中使用了这些相同的WCF服务.但是,当我添加一个方法将xml字符串插入我的数据库时,我收到此错误:
Content Type text/xml; charset=utf-8 was not supported by service . The client and service bindings may be mismatched.
Run Code Online (Sandbox Code Playgroud)
但我检查了绑定,从ServiceReferences.ClientConfig文件中我可以看出它们是basicHttpBinding.我四处寻找解决方案,我唯一能找到的建议是在重启Visual Studio后删除服务引用并读取它,所以我终于尝试了,但是现在,即使删除了我添加的方法,我现在也会收到此错误我尝试在客户端上添加服务引用:
Warning 6 Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: Exception has been thrown by the target of an invocation.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IXMonitorXMLDataService'] C:\Users\ckarrs\Documents\Visual Studio 11\Projects\SL_xMonitor_Frontend_RefactorV1_Backup82212\SL_xMonitor_Frontend_RefactorV1\Service References\XMonitorXMLDataService\Reference.svcmap 1 1 SL_xMonitor_Frontend_RefactorV1
Warning 7 Custom tool warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IXMonitorXMLDataService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='BasicHttpBinding_IXMonitorXMLDataService'] C:\Users\ckarrs\Documents\Visual Studio 11\Projects\SL_xMonitor_Frontend_RefactorV1_Backup82212\SL_xMonitor_Frontend_RefactorV1\Service References\XMonitorXMLDataService\Reference.svcmap 1 1 SL_xMonitor_Frontend_RefactorV1
Warning 8 Custom tool warning: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='BasicHttpBinding_IXMonitorXMLDataService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:service[@name='XMonitorXMLDataService']/wsdl:port[@name='BasicHttpBinding_IXMonitorXMLDataService'] C:\Users\ckarrs\Documents\Visual Studio 11\Projects\SL_xMonitor_Frontend_RefactorV1_Backup82212\SL_xMonitor_Frontend_RefactorV1\Service References\XMonitorXMLDataService\Reference.svcmap 1 1 SL_xMonitor_Frontend_RefactorV1
Warning 9 Custom tool warning: No endpoints compatible with Silverlight 5 were found. The generated client class will not be usable unless endpoint information is provided via the constructor. C:\Users\ckarrs\Documents\Visual Studio 11\Projects\SL_xMonitor_Frontend_RefactorV1_Backup82212\SL_xMonitor_Frontend_RefactorV1\Service References\XMonitorXMLDataService\Reference.svcmap 1 1 SL_xMonitor_Frontend_RefactorV1
Warning 10 Custom tool warning: Exception has been thrown by the target of an invocation. C:\Users\ckarrs\Documents\Visual Studio 11\Projects\SL_xMonitor_Frontend_RefactorV1_Backup82212\SL_xMonitor_Frontend_RefactorV1\Service References\XMonitorXMLDataService\Reference.svcmap 1 1 SL_xMonitor_Frontend_RefactorV1
Run Code Online (Sandbox Code Playgroud)
我感到很困惑.其他服务引用保持不变,并且此服务完全正常工作,直到我尝试添加并更新引用.这是VS 2010和2012之间的兼容性问题吗?MSDN网站称VS 2012向后兼容VS 2010,一切似乎都在好转.非常感谢任何帮助,我很困惑.如果需要其他信息,请告诉我.
我不是 WCF 方面的专家,但我了解 .net Web 服务和 WSDL,因此如果信息与 WCF 无关,请更正。
错误说:An exception was thrown while running a WSDL import extension。这意味着 VS 无法正确读取服务 WSDL 文件,并且无法创建它所需的代理客户端类,以便进行服务调用。
因为引用 Web 服务的 .net 应用程序将自动获取 WSDL,但有时它不是它所期望的,这可能会导致麻烦。有一种方法可以配置 WSDL 文件的生成方式,但实现起来并不容易(在此处阅读更多内容)
try to get the WSDL file by typing ?wsdl query after the service URL in a browser and see what is inside. If the server is behind a proxy server, this can cause problems. At the end of the WSDL file you will find the 'binding', 'endpoint', and 'port' tags/attributes.
According to the error message you have posted, the WSDL is not according to the expected schema, and parsing failes.
一个简单的解决方法是,如果您有权访问服务器,请将生成的 WSDL 文件保存在服务所在的同一目录中,根据需要修改 WSDL 文件,并在您的文件中添加对修改后的 WSDL 文件的引用。客户端应用程序。当然,这有一个副作用,即每次更改服务定义时文件都会不同步。因此,如果您计划将来大量更改这些方法,也许更好的方法是更改/修复自动WSDL 生成。