私はかなり安定したサーバーアプリケーションバージョンを持っており、数十人のユーザーにほぼ1年間展開されています。セキュリティで保護されたメソッドXによるセキュリティ上の重要なメソッドYへのアクセスが失敗しました。
一つの新しい顧客最近セットアップアプリケーションとは、次のエラーを取得している:
System.MethodAccessException: Attempt by security transparent method [SomeMethod] to access security critical method [SomeOtherMethod] failed.
のsomeMethodとSomeOtherMethod両方は、.NET 4に対してビルドされている私が書いたアセンブリ内のメソッドは、であり、内部のことを実行していますWindowsサービス。違いがある場合、SomeOtherMethodは.NET 2.0用に構築されたサードパーティアセンブリ(EntLib 4.1)の型を参照します。 EntLib 4.1のコードを見ると、SecurityTransparent属性とAPTC属性の両方を使用していることがわかりますが、これは他のクライアントで問題を引き起こしたことはありません。
これらのアセンブリは.NET 2.0 CLRからアップグレードされましたが、以前はありました。この正確なコードは他の顧客でもうまく動作していますが、APTC属性を明示的に使用しているわけではなく、SecurityCritical属性をどこでも使用しています。
これは構成上の問題またはおそらく.NET Frameworkのパッチの問題であるという結論に至りました。この破損の原因となる.NET用のパッチがリリースされましたか?デフォルトではオフになっているが、顧客が有効にしている可能性があるこの種のチェックを強制する設定をいくつか設定していますか?
最後の1つです。私のサービスでは、SSRS RDLCを使用してPDFを生成しています。原因.NET 4でいくつかの変更に、私は次の設定を経由して、従来のセキュリティポリシーを使用するようにサービスを強制する必要があります:私はこれを行う必要がある理由の詳細については
<runtime>
<NetFx40_LegacySecurityPolicy enabled="true" />
</runtime>
を、このstackoverflowの記事を参照してください。Very High Memory Usage in .NET 4.0
重要な点は、他のすべての顧客にも同じことを行うことです。この顧客だけが問題を抱えています。
これは意味があります。私は今日これをチェックしている。私の考えは、実際には、電子メールまたはIE経由で安全でないとダウンロードされたファイルにフラグを付けるWindowsの機能のために、アセンブリがブロックされていると考えました。私はこれを以前に噛んだ。 – RMD
あなたの答えはとても役に立ちました。実際には、物事を詰まらせるブロックされたアセンブリであることが判明しました。ファイルのブロックを削除すると([プロパティ] - > [ブロック解除])、問題は解決されました。 – RMD
@RMDありがとう!あなたはWindowsだ。 – JefClaes