7

IIS 7.5 で .NET 2.0 ランタイムを使用する単純な .net アプリケーションがあり、web.config のマシン キーを次のものを使用するように変更しました。

  <machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="SHA1"/>

これはローカルでは正常に機能しますが、サーバーに公開すると、サイトを閲覧するたびに「HttpException (0x80004005): データを検証できません」というメッセージが表示されます。コンパイル debug="false" を設定するようにしました。検証方法を 3DES に設定すると、この問題は解消されますが、SHA1 を使用する必要があります。ここに欠けている設定オプションはありますか? 以下のスタック トレースを参照してください。

[HttpException (0x80004005): Unable to validate data.]
   System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo, Boolean signData) +1008
   System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo) +91
   System.Web.UI.Page.EncryptStringWithIV(String s, IVType ivType) +83
   System.Web.UI.Page.EncryptString(String s) +30
   System.Web.Handlers.RuntimeScriptResourceHandler.GetScriptResourceUrlImpl(List`1 assemblyResourceLists, Boolean zip, Boolean notifyScriptLoaded) +1497
   System.Web.Handlers.RuntimeScriptResourceHandler.System.Web.Handlers.IScriptResourceHandler.GetScriptResourceUrl(List`1 assemblyResourceLists, Boolean zip, Boolean notifyScriptLoaded) +1148
   System.Web.Handlers.RuntimeScriptResourceHandler.System.Web.Handlers.IScriptResourceHandler.GetScriptResourceUrl(Assembly assembly, String resourceName, CultureInfo culture, Boolean zip, Boolean notifyScriptLoaded) +152
   System.Web.Handlers.ScriptResourceHandler.GetScriptResourceUrl(Assembly assembly, String resourceName, CultureInfo culture, Boolean zip, Boolean notifyScriptLoaded) +37
   System.Web.UI.ScriptManager.GetScriptResourceUrl(String resourceName, Assembly assembly) +105
   System.Web.UI.ScriptRegistrationManager.RegisterClientScriptResource(Control control, Type type, String resourceName) +113
   System.Web.UI.ScriptManager.System.Web.UI.IScriptManager.RegisterClientScriptResource(Control control, Type type, String resourceName) +14
   System.Web.UI.ClientScriptManager.RegisterClientScriptResource(Control control, Type type, String resourceName) +53
   System.Web.UI.WebControls.Menu.OnPreRender(EventArgs e, Boolean registerScript) +113
   System.Web.UI.WebControls.Menu.OnPreRender(EventArgs e) +25
   System.Web.UI.Control.PreRenderRecursiveInternal() +80
   System.Web.UI.Control.PreRenderRecursiveInternal() +171
   System.Web.UI.Control.PreRenderRecursiveInternal() +171
   System.Web.UI.Control.PreRenderRecursiveInternal() +171
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842

4

2 に答える 2

5

真の .NET 2.0 アプリケーション プールでアプリケーションを実行していますか? (IIS 7.5 を使用しているため、お尋ねします)。

そうでない場合は、.NET 4.5 フレームワークの暗号化アルゴリズムが変更されたことに注意してください。

< .NET 4.5 Framework との互換性が必要な場合は、互換性タグが必要になります。

<machineKey compatibilityMode="Framework20SP1" />  

http://msdn.microsoft.com/en-us/library/system.web.configuration.machinekeysection.compatibilitymode.aspxまたはhttp://blogs.msdn.com/b/webdev/archive/2012/10/23を参照してください。詳細については、 /cryptographic-improvements-in-asp-net-4-5-pt-2.aspxを参照してください。

于 2013-10-16T15:29:44.817 に答える