我已經用一些自定義的認證和授權實現了一個WCF服務。爲什麼OperationContext.Current在IAuthorizationPolicy.Evaluate()中爲null,但只有前兩次?
的評價我的類的方法,實現了IAuthorizationPolicy被稱爲3倍。
這種情況的原因是,在評估方法中,我試圖從OperationContext.Current屬性來訪問客戶端IP地址爲:
OperationContext context = OperationContext.Current;
MessageProperties prop = context.IncomingMessageProperties;
RemoteEndpointMessageProperty endpoint = prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
IPAddress address = null;
if (endpoint != default(RemoteEndpointMessageProperty))
{
IPAddress.TryParse(endpoint.Address, out address);
}
return address;
的OperationContext.Current屬性總是空的前兩個運行該方法的次數,但第三次調用Evaluate方法時,該屬性已設置。
在什麼階段是OperationContext.Current屬性被設置?並從哪裏?
我能做些什麼嗎?它不會引起任何大規模的問題 - 授權在第三遍通過該方法時經過...但是它只是覺得這對我來說是不正確的。
如果任何人都可以填補我的東西我做錯了,或者忽視了這樣做將是巨大的。或者,就我爲什麼看到這種行爲的解釋也會非常有趣。謝謝。