2

我有一个WCF服务,其服务文件为 -Serivce.svc 在这里我可以使用WebOperationContext.Current

服务文件中的代码访问数据访问实用程序层,该层进行其他调用;我需要根据传入的header在数据访问层做一些工作。

然而,WebOperationContext.Currentnull在这里。

我该如何解决这个问题?

4

1 回答 1

3

从您的问题来看,您的“数据访问实用程序层”似乎取决于通过标头传递给服务的信息。明确这一点,最好通过一个接口,以便它易于测试。像这样的东西:

public class DataAccessLayer(IMetaInfoFromHeaders requiredInfo)
{ /* implementation */ }

(或者,您可以只IMetaInfoFromHeaders为 DAL 中的一个或几个方法提供参数,如果这看起来更好 - 这取决于具体情况。)

您的服务负责处理消息。它应该从标头中提取信息,并使用实现的对象将其传递给 DAL IMetaInfoFromHeaders

底线:不要让 DAL 依赖于 WebOperationContext。

于 2012-09-20T11:16:55.387 回答