我有一個具有多個端點的服務。這些端點從客戶端獲得請求,也從彼此獲取請求。WCF如何檢測客戶端和服務器是否在同一臺服務器上
對於從其他端點獲取請求的方法,我需要確保只能從服務器內調用該方法。
我已經有一個認證過濾器攔截機制。我可以將這個功能綁定到這些特定的方法。我無法弄清楚的是,我怎樣才能說出來自同一臺服務器的請求。看看下面的代碼片斷,我使用的身份驗證:
public class ServiceUser_Authenticator : IParameterInspector
{
public object BeforeCall (string operationName, object[] inputs)
{
var ip = (OperationContext.Current.IncomingMessageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty).Address;
if (ip != /* 127.0.0.1 , localhost , RealIP of the server */)
throw new FaultException("Access denied");
return null;
}
...
}
我想檢查,如果客戶端的IP是和我一樣,但不知道怎麼辦。 RealIP(external)
可能會工作,但最好是一個非靜態值。
那麼,如何檢查wcf調用的客戶端是否與wcf服務位於同一服務器中?
我使用的是活的列表來保持在線客戶以任意發送通知給他們回調通道。因此我需要在同一個服務實例中擁有這些方法。我認爲最簡單的不會在我的情況下完成這項工作:) –
它會完成這項工作。我不在我的工作電腦上。但是如果需要的話,我可以儘快向您展示配置代碼。只是告訴。 Registers –
如果您向我展示配置,即使我仍然不確信這種方法,如果我學會了一種管理方法,那將會很棒。順便說一句,我們可能需要繼續關於聊天的討論。 –