0

我有一个带有 WCF 服务的无状态服务器。服务器可以有多个数据库连接。因此,我必须为每个 WCF 请求提供数据库连接。我在请求对象中执行此操作。因此,对我的服务器的每个 WCF 请求都包含有关数据库连接的信息。这是函数的操作合约:

 <OperationContract()>
 Function ReadPersons(ByVal aRequest As ReadPersonsRequest) As PersonsResponse

这是请求的数据合同:

<DataContract()>
Public Class ReadPersonsRequest
    <DataMember()>
    Public Property DatabaseConfig() As DatabaseConfig

现在我想为我的 WCF 服务进行自定义身份验证。因此我实现了一个继承自 UserNamePasswordValidator 的 CustomUserNamePasswordValidator。我得到用户名和密码。用户存储在数据库中。因此我必须为身份验证做一个数据库请求。问题是:我不知道服务器应该使用哪个DB,因为这个信息是在WCF服务函数的请求对象中提交的(见上文)。

在UserNamePasswordValidator的实现中,有没有办法获取被调用的WCF服务函数的参数(请求对象)?

4

1 回答 1

0

您可以创建自己的MessageInspectors,以便在服务器接收到请求之前拦截请求。通过这种方式,您可以从服务调用中识别数据库详细信息并进行相应处理。

有关实施的更多细节是here

于 2013-05-25T19:46:05.387 回答