我有一个由 Windows 服务托管的 WCF REST 休息服务。它使用自定义 UserNamePasswordValidator 身份验证。
我想在身份验证时获取客户端 IP 地址:
ublic static string GetClientIPAddress()
{
try
{
var context = OperationContext.Current;
var prop = context.IncomingMessageProperties;
var endpoint = prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
return endpoint.Address;
}
catch (System.Exception exc)
{
Debug.Assert(false,exc.Message);
return string.Empty;
}
}
但它会引发异常,因为在这种情况下上下文为空。我该如何解决这个问题?请注意,大多数建议的 asp.net 兼容模式不是一个选项,我的服务由 WIndows 服务托管,而不是由 IIS 托管。
谢谢!