0

これまでのところ、中程度の信頼で実行されている Web サイトに関連する問題に遭遇したことがないという点で、私はおそらく幸運だったと言わざるを得ません。イントラネット アプリしか開発したことがないか、たまたま完全に信頼できるホスティング会社を使用したことがあります。しかし、最近のプロジェクトで使用するように求められたホストは中程度の信頼で実行されるため、アプリでこれを実行しようとしています。いくつか質問があります - 私は Windows XP で開発しています。そこで IIS を中程度の信頼 (デバッグが容易) に構成できますか、また、それは web.config 設定ですか? この主題に関する豊富な情報があり、学習曲線は急勾配です。

第二に、多くのコードをいじって削除した後、この行がパーミッションエラーを引き起こしていると思います:

Type.GetFields(BindingFlags.Instance または BindingFlags.NonPublic または BindingFlags.Public) 内の FieldInfo としての各 FieldInfo について

これが可能な候補であることを誰でも明確にすることができますか、特に。その非公開フラグ?これはコードをコピーして貼り付けたものなので (Coding Horror でこのリスクが強調されました)、実際に考えたことはありません。ループは、パブリック フィールドと非パブリック フィールドの両方のオブジェクト内の各フィールドを通過すると想定しています。

乾杯、ロブ。

4

3 に答える 3

3

申し訳ありませんが、非公開でのリフレクションは完全な信頼と同等です。

どういうわけか私が完全な信頼を持っていなかったが、非公開の反映を持っていた場合、私はそれを利用して自分のコードの信頼レベル(書き込み可能な文字列など)を変更することができました。

于 2009-06-24T01:12:28.153 に答える
2

はい、XP上のWebサイトは、中程度の信頼で実行するように構成できます。

<system.web>セクションに以下を追加します。

<!-- Case is important: it's Medium, not medium -->
<trust level="Medium"/>

そして、あなたはそこにいます。

ほとんどのホストは、デフォルトを超えるいくつかの追加の権限を使用して、わずかに高い「中」の信頼設定でサイトを実行していることがわかります。技術者は、違いがある場合はそれを教えてくれるはずです。

あなたが見てみると:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web_mediumtrust.config

適用されているデフォルト設定が表示されます。

リフレクションは、中程度の信頼で制限される重要なことの1つです-GetFieldsページの備考から:

要求されたフィールドが非公開であり、呼び出し元が現在のアセンブリの外部に非公開オブジェクトを反映するReflectionPermissionを持っていない場合、このメソッドはnull参照(Visual BasicではNothing)を返します。

これはnullを返す可能性があるため、反復を開始する前にnullをチェックするか、FieldInfoがnull/nothingでないことをチェックしてから使用する必要があります。

于 2009-06-24T01:08:00.643 に答える
0

誰も回答していないため、これをクローズ済みとしてフラグを立てます。また、再コーディングを試みるには問題が多すぎることが判明しました。プログラムの書き方は悪くありませんが、オブジェクト マッピングにリフレクションを多用しています。正直なところ、完全な信頼をサポートするホスティング会社を見つける方が簡単です。

于 2009-06-23T21:36:53.393 に答える