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
何か案は?ありがとう!
編集します。これはSitecore6.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