我有一个WCF服务,其服务文件为 -Serivce.svc
在这里我可以使用WebOperationContext.Current
服务文件中的代码访问数据访问实用程序层,该层进行其他调用;我需要根据传入的header在数据访问层做一些工作。
然而,WebOperationContext.Current
就null
在这里。
我该如何解决这个问题?
我有一个WCF服务,其服务文件为 -Serivce.svc
在这里我可以使用WebOperationContext.Current
服务文件中的代码访问数据访问实用程序层,该层进行其他调用;我需要根据传入的header在数据访问层做一些工作。
然而,WebOperationContext.Current
就null
在这里。
我该如何解决这个问题?
从您的问题来看,您的“数据访问实用程序层”似乎取决于通过标头传递给服务的信息。明确这一点,最好通过一个接口,以便它易于测试。像这样的东西:
public class DataAccessLayer(IMetaInfoFromHeaders requiredInfo)
{ /* implementation */ }
(或者,您可以只IMetaInfoFromHeaders
为 DAL 中的一个或几个方法提供参数,如果这看起来更好 - 这取决于具体情况。)
您的服务负责处理消息。它应该从标头中提取信息,并使用实现的对象将其传递给 DAL IMetaInfoFromHeaders
。
底线:不要让 DAL 依赖于 WebOperationContext。