1

我是 WCF 的新手,遇到了一个我似乎找不到答案的问题。

我有两个项目。一个是简单的登录应用程序,另一个是连接到数据库的托管 IIS WCF 服务 (.svc)。这两个项目都是 .NET 4。

WCF 服务有两种方法:“Administrator_Login”和“User_Login”。

每当调用每个方法时,它们都会执行与该方法相关的一些代码:Administrator.Login.Execute 和 User.Login.Execute(我将我的代码组织到命名空间中,Administrator.Login 和 User.Login 是类名和 Execute是方法的名称)。

这两个操作都返回存在于 User.Login 类或 Administrator.Login 类中的不同“LoginOut”对象。

我的问题是:虽然每个操作都组织到 WCF 服务上的命名空间中,但是当我将客户端应用程序的服务引用添加到服务并查看返回的对象类型的名称时,我看到“LoginOut 和“LoginOut1” .

有没有办法通过命名空间引用 WCF 服务返回的客户端应用程序中返回的对象?

我目前必须这样做:

Dim loginOut As Service.LoginOut = Service.Administrator_Login().Execute() 
Dim loginOut As Service.LoginOut1 = Service.User_Login().Execute() 

但我希望能够做到:

Dim loginOut As Service.Administrator.Login.LoginOut = Service.Administrator_Login().Execute() 
Dim loginOut As Service.User.Login.LoginOut = Service.User_Login().Execute() 

任何帮助将不胜感激。

4

1 回答 1

0

如果您将“LoginOut”的定义分离到一个类库中,然后从您的客户端项目中引用该类库,并更新服务引用,那么您应该得到您正在寻找的行为。如果不执行 configureServiceReference,请单击高级并确保选中“在所有引用的程序集中重用类型”。

请注意,这不是执行 SOA 的“纯粹”方式。这会将您的客户端和 Web 服务绑定在一起,这可能会给您带来麻烦。但是,我自己在不同的小规模情况下完成了这项工作,并没有遇到任何问题。

此解决方案可能有点繁重,具体取决于所需的行为。它涉及将库 DLL 的副本分发给每个客户端。这可能非常强大,因为您正在使用数据有效地分配行为,但对于手头的问题可能有点过分了。

于 2012-11-19T15:19:01.443 回答