0

私は問題を抱えています(または少なくとも私はそう思います)。サイト間でのフォーム認証データの将来の共有に備えて、web.configでサイトのマシンキーを設定しようとしています。最初にweb.configで次のように設定しました。

  <machineKey validationKey="<SOME_VALUE>" decryptionKey="<SOME_VALUE>" validation="SHA1" decryption="AES"/>

テストとして、web.configの新しいmachineKey要素をテストするために次のように記述しました。

var machineConfigMachineKey = (MachineKeySection)WebConfigurationManager.OpenMachineConfiguration().SectionGroups["system.web"].Sections["machineKey"];
var webConfigMachineKey = (MachineKeySection)WebConfigurationManager.OpenWebConfiguration("").SectionGroups["system.web"].Sections["machineKey"];
Response.Write("<pre>");
Response.Write("<b>machine.config decrypt:  </b>" + machineConfigMachineKey.DecryptionKey + "<br />");
Response.Write("<b>web.config decrypt:      </b>" + webConfigMachineKey.DecryptionKey + "<br />");
Response.Write("<br />");
Response.Write("<b>machine.config validate: </b>" + machineConfigMachineKey.ValidationKey + "<br />");
Response.Write("<b>web.config validate:     </b>" + webConfigMachineKey.ValidationKey + "<br />");
Response.Write("</pre>");
Response.End();

...この表示になります:

machine.config decrypt:  AutoGenerate,IsolateApps
web.config decrypt:      AutoGenerate,IsolateApps

machine.config validate: AutoGenerate,IsolateApps
web.config validate:     AutoGenerate,IsolateApps

「AutoGenerate、IsolateApps」ではなく、web.configの新しいmachineKey要素からカスタム値が表示されることを期待していたため、明らかにこれには非常に混乱しています。

私はここで私に残酷に明白であるはずの何かを逃していますか?

ありがとう :)

4

1 に答える 1

0

WebConfigurationManager.GetSection("system.web/machineKey")代わりに静的 APIを使用してください。構成階層をたどり、最も適切なもの (通常は現在のアプリケーションの ~/Web.config) を見つけて、その特定の値を引き出すロジックを自動的に実行します。

于 2012-10-02T17:02:18.993 に答える