如何在客户端项目中添加服务引用?

4

我对WCF完全陌生,如果你发现我在这里做错了什么,请指出。我创建了一个WCF服务项目(我的服务类派生自ServiceBase类),终结点地址绑定设置为basicHttpBinding。现在我需要创建一个客户端应用程序,可以从该服务调用一些API。我的问题是,在我的客户端应用程序中,如何添加对该服务的服务引用。我需要先在IIS下发布此服务(这意味着我必须在机器上安装IIS),还是有其他添加服务引用的方法。


通常情况下,您可以运行调试WCF项目,它将启动Cassini服务器,然后您可以生成服务引用。或者您可以使用IIS Express。或者您可以只使用共享的DLL,并使用ChannelFactory<Interface>而不是生成服务引用。 - Darren Kopp
3个回答

5
你需要运行服务,并发布元数据。这可以是IIS,也可以是任何其他有效的托管选项
我经常编写一个简单的控制台应用程序来自主承载WCF服务,正是出于这个原因。这使得调试变得非常容易,在开发早期更新服务引用以及在同时处理客户端和服务器时可以极大地简化工作。

2
你不必在IIS下发布它,使用WCF,你可以将服务托管在控制台应用程序、Windows表单应用程序、Windows服务或IIS下。
在客户端应用程序中,您只需要右键单击并添加服务引用即可。
更新:
简单的WCF示例

当我右键单击并添加服务引用时,它会弹出一个对话框,要求输入“地址”。我该如何提供该地址?我需要先运行服务吗? - Silverlight Student
@Silverlight 学生:是的。服务需要运行,并且需要发布元数据终结点。您需要输入该地址。请查看服务的 app.config 等文件以获取地址。 - Reed Copsey
@Silverlight 学生:正如 Reed 上面所说,您需要首先托管服务,请尝试在控制台应用程序中托管它。非常容易。 - Jethro
你是说先将我的服务项目转换为控制台应用程序吗?也许一个示例可以帮助,虽然我正在阅读您提供的简单WCF示例链接,以查看是否可以帮助创建控制台应用程序。 - Silverlight Student
1
@Silverlight 学生,如果你在完成那个示例后仍需要帮助,请告诉我。 - Jethro

2
通常情况下,您应该将 WCF 服务托管在 IIS 中的最终位置(因为这样它也可以为您确定 URL),然而,您也可以直接从 Visual Studio 运行它,然后在客户端的 Visual Studio 中,右键单击“引用”,选择“添加服务引用”,并指向您运行 WCF 服务的任何位置。
然后应用程序将根据 WSDL 生成其 WCF 客户端。
请注意,它还会在您的 app.config 中设置该服务的 URL,因此,如果您没有将该服务托管在其最终生产 URL 上,当您将其移动到生产环境中时,必须在客户端中更改该 URL。
因此,更直接地回答您的问题:是的,在从客户端应用程序中“添加服务引用”时,您的服务应该正在运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接