我创建了一个由 IIS 托管的 WCF 服务。它提供了一些在合同(接口)中指定的方法。这很好用,这里没有问题。
<services>
<service name="myNamespace.KliAPI" behaviorConfiguration="ServiceBehavior">
<endpoint address="" behaviorConfiguration="largeDataBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" name="test" contract="myNamespace.ImyAppAPI" />
<endpoint address="help" kind="webHttpEndpoint" behaviorConfiguration="helpPageBehavior" contract="myNamespace.ImyAppAPI" />
</service>
</services>
我使用 customAuthenticator 是 web.config 来处理登录逻辑。它根据数据库验证用户名和密码,并根据凭据是否与数据库记录匹配返回 TRUE 或 FALSE。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="CustomAuthenticator" type="myNamespace.CustomAuthenticator, myNamespace.IISServiceHost" />
</modules>
</system.webServer>
问题: 我希望能够在通过合同接口ImyAppAPI公开的方法中获取/读取提供给 CustomAuthenticator 类的用户名公开的方法中获取/读取提供给 CustomAuthenticator 类的用户名。如何将信息从主机共享到服务方法?我认为这特别棘手,因为公开的方法不是以编程方式生成的,而是通过在 web.config 文件中指定合同自动生成的。
例子:
public string[] DownloadUserSpecificData(int[] filters){
//Here I want access to the username
}