对IIS Express本地运行的WCF服务的引用不会公开方法

时间:2016-06-17 14:00:47

标签: c# web-services wcf iis-express

我最近继承了许多WCF Web服务,这些服务配置为在Web项目中使用ASHX处理程序以http://example.com/Services/V1/MyService.svc的形式呈现.SVC文件。服务在开发和生产环境中运行,WSDL出现,并且在新项目中添加服务引用允许我调用MyMethod并获得与预期完全相同的响应。

错误处理和日志记录的故事并不是很好,因此我尝试在本地运行该站点并向http://localhost:1234/Services/V1/MyService.svc添加服务引用。我可以在该URL加载服务并查看为生产环境显示的相同WSDL,但是当我尝试使用类似于以下内容的代码来调用我的方法时,客户端和响应对象都不会被识别出来连接到生产。

using MyServiceTestProject.LOCAL_MyService;
//...
MyServiceClient test = new MyServiceClient();

MyServiceMethodResponse r = test.MyServiceMethod("arguments!");

我能够看到一个仅在我的服务中声明的MyCustomObject类,并且当我停止使用服务引用时停止可用,所以我知道即使它不是人们期望的所有东西也会遇到

当我比较本地和dev / prod环境时,Web.Config文件的相关部分是相同的,并且本地运行的项目是部署到其他框的项目。

有没有人遇到过这种使用IIS Express在本地运行服务项目的行为?

编辑:. prod,dev和本地环境之间的端点不同,每个端口使用相同的代码。谢谢你指出我最初省略的细节。

1 个答案:

答案 0 :(得分:0)

在发布问题,删除并重新添加服务引用并重新启动我的IDE和计算机之后花了几个小时打开和关闭尝试解决此问题后,我发现右键单击服务名称并选择"更新服务参考" (在下面的屏幕截图中用红色圈出)最终会解决我看到的问题,尽管VS有时会要求我在它工作之前执行多次更新。

Update Service Reference context menu option

如果不执行更新,我尝试删除和添加服务以及重新启动Visual Studio /重启我的PC都不会有助于解决此问题。我不确定是否有关于IIS Express的内容导致服务引用不是第一次使用所有必需的数据创建的,或者它是否是其中一百个其他变量之一我的本地环境,但至少有一种可靠的方法可以让它在失败时工作。