「これは無効な webresource 要求です。」エラー メッセージ


説明

ユーザーがURLでWebResource.axdおよびScriptResource.axdのような各種のASP.NETのリソースをリクエストすると、Sitecoreのログ ファイルに以下のエラーが出力される可能性があります。例えば、ASP.NET AJAXのスクリプトなどのリソースで、この事象が起きる可能性があります。

Message: This is an invalid webresource request.(これは無効な webresource 要求です。)
System.Web.HttpException
Source: System.Web
  at System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext context)
  at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
  at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

解決策

ほとんどの場合では、このエラーはSitecoreに直接関連するものではなく、一般的なWebサイトの設定に起因しています。

この挙動を引き起こすよくある原因としては、以下のようなものが考えられます。

原因1:
このエラーは、「スティッキーな」セッションのポリシーなしで負荷分散環境を実行している際に発生する可能性があります。
様々なサーバーが様々なマシンのキーを持っている場合、リソースを認識する暗号化されたクエリ文字列パラメータが、別のサーバー上で復号不可能となるため、リソースへのリクエストが失敗する可能性があります。
解決策1:
全てのサーバーで同じ<machineKey>(validationKeyとdecryptionKeyの両方)が使用されるかを確認します。マシン キーを設定する方法は、以下の記事に掲載されています:
(英語)http://msdn.microsoft.com/en-us/library/ff649308.aspx#paght000007_webfarmdeploymentconsiderations
 
原因2:
特定のWebリソースの処理に問題が発生します。
解決策2:
もし問題のあるリソースのURLが判明していれば、そのページを使用して、問題が発生するリクエストのクエリ文字列を復号化することができます。これによりエラーの原因となるリソースの名称およびロケーションを特定することができます。
詳細情報については、以下の記事をご参照ください:
(英語)http://blogs.telerik.com/hristodeshev/posts/07-03-27/debugging-asp-net-2-0-web-resources-decrypting-the-url-and-getting-the-resource-name.aspx
エラーの原因となるリソースがSitecoreから提供されているアセンブリに含まれている場合、Sitecoreサポートにご連絡ください。
 
原因3:
このエラーは、クライアントのブラウザまたは検索エンジンが、WebResource.axdおよびScriptResource.axdのリクエストに対してキャッシュされたコンテンツを、(おそらく無効になったクエリ文字列パラメータで)再認証しようとした際にも発生する可能性があります。
解決策3:
データが正常に再読み込みされると、エラーは発生しなくなります。