我正在尝试使用 httpRequestBegin 管道处理器来执行此操作,但我似乎无法从给定的 HttpRequestArgs 参数访问用户的 IP 地址。
当我实现具有此方法的类时
public void Process(HttpRequestArgs args) {
string ipAddress = args.Context.Request.UserHostAddress; // Not working
string state = GetState(ipAddress); // already implemented elsewhere
RedirectUserByState(state); // already implemented elsewhere
}
我认为这可能包含用户的 IP 地址
args.Context.Request.UserHostAddress
但它会导致此错误(堆栈跟踪表明它源自 Process 方法):
System.Web.HttpException: Request is not available in this context
有任何想法吗?谢谢!
编辑,这是在 Sitecore 6.1 和 web.config 中
<pipelines>
<!--...-->
<httpRequestBegin>
<!--...-->
<processor type="Sitecore.Pipelines.HttpRequest.ItemResolver, Sitecore.Kernel"/>
<processor type="MySolution.Redirector, MySolution"/>
<processor type="Sitecore.Pipelines.HttpRequest.LayoutResolver, Sitecore.Kernel"/>
<!--...-->
</httpRequestBegin>
<!--...-->
</pipelines>
此服务器可能位于负载平衡器后面。
编辑2:看起来我试图在 Process() 函数中访问这两个,这就是导致错误的原因:
Sitecore.Context.Request
Sitecore.Context.Response