0

Visual Studio 開発サーバー (VS2010 で Web サーバーに組み込まれている) を使用して .NET 4.0 Web アプリケーションをローカルで実行しています。ここ数か月間、私の StructureMap ブートストラップ ファイルは完全に機能しました。

StructureMap 2.6.1を使用しています

Bootstrapper ファイルまたは Web.config ファイルを変更していないのに、Web アプリケーションを起動しようとすると、突然、この奇妙なエラーが発生します。

Web サイトからスローされるエラーは次のとおりです。

エラー

少し読みにくいです。それは言います:

Security Exception
Description: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.
Exception Details: System.Security.SecurityException. Request Failed.

ここに私のブートストラッパーファイルのコードがあります:

public class BootStrapper
{
    public static void ConfigureStructureMap()
    {            
        ObjectFactory.Initialize(x =>
        {
            x.AddRegistry<ProductRegistry>();
        });
    }   
}

public class ProductRegistry : Registry
{
    public ProductRegistry()
    {

        For<IFirmRepository>()
            .Use<FirmRepository>().Ctor<string>("connectionString").Is(ConfigurationManager.ConnectionStrings["FeesAndFlows"].ConnectionString);

        For<ICryptographyService>()
            .Use<Rijndael>();

        For<IUserRepository>()
            .Use<UserRepository>().Ctor<string>("connectionString").Is(ConfigurationManager.ConnectionStrings["FeesAndFlows"].ConnectionString);

        For<IAuthenticationService>()
            .Use<AuthenticationService>();

        For<ILogger>()
            .Use<DatabaseLogger>();

    }
}

この行でエラーがスローされています:

x.AddRegistry<ProductRegistry>();

これらの各行を一度に 1 つずつ Web.config ファイルに追加しようとしましたが、問題は解決しませんでした。

<trust level="Full" />

<securityPolicy>
    <trustLevel name="Full" policyFile="internal"/>
</securityPolicy>

誰かアイデアを持っているか、このような問題について聞いたことがありますか? これは非常に重要です。b/c StructureMap が正しく起動しないと、アプリケーション全体が実行されません。

ありがとう、マイク

アップデート:

わかりましたので、私の問題はローカルにあるようです。ここにいる他の開発者は、コードをダウンロードして、ローカル マシンで問題なく実行できます。変。それらはStructurMapをうまくブートストラップし、すべてのインスタンスが解決されます...

Web プロジェクトをローカルでデバッグ モードで実行しているときに、自分のマシンだけが StructureMap をブートストラップできない理由について何か考えはありますか?

4

3 に答える 3

0

さて、これが問題でした。StructureMap.dll は Win 7 によってブロックされました。どのようにブロックされたのか、どこでブロックされたのかはわかりませんが、StructureMap.zip ファイルをシステムにダウンロードしたときに、.zip ファイルがブロックされたようです。 、.zip ファイルから抽出されたすべてのアイテムもブロックされました。

ブロックを解除するたびに、Web アプリを実行しようとすると、ブロックされた状態に戻りました。

私が修正した方法は、元の .zip ファイルに戻り、ブロックを解除して展開し、StrectureMap.dll 参照をブロックされていないものに置き換えることでした。

非常識。

ファイルが突然ブロックされる原因や、Windows 7 のどのプロセスがどのファイルをブロックする必要があるかを判断することもわかりませんが、この奇妙なオペレーティング システムの「機能」により、1 日分の作業が必要になりました。

于 2011-11-22T21:33:18.263 に答える
0

コードをネットワーク ドライブから実行していませんか (つまり、ドキュメント フォルダがネットワーク ドライブにリダイレクトされていませんか)。ドメインで実行されているエンタープライズ環境にいますか?

前者の場合、コードがイントラネット セキュリティ コンテキストで実行されている可能性があります。前者が正しくなく、後者が正しい場合、ネットワーク管理者が企業全体の CAS ポリシーを変更した可能性が非常に高くなります。

于 2011-11-17T02:01:39.657 に答える
0

ObjectFactory.Initialize というまったく同じ場所でまったく同じ問題が発生しました。

'/X.ServiceHost' アプリケーションでサーバー エラーが発生しました。

メンバーのオーバーライド中に継承セキュリティ ルールに違反しました: 'StructureMap.StructureMapException.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'。オーバーライドするメソッドのセキュリティ アクセシビリティは、オーバーライドされるメソッドのセキュリティ アクセシビリティと一致する必要があります。

説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.TypeLoadException: メンバーのオーバーライド中に継承セキュリティ ルールに違反しました: 'StructureMap.StructureMapException.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'. オーバーライドするメソッドのセキュリティ アクセシビリティは、オーバーライドされるメソッドのセキュリティ アクセシビリティと一致する必要があります。

NuGet (2.6.4.1) から最新の StructureMap パッケージを取得すると、問題が修正されました。

StructureMap NuGet パッケージ

于 2012-09-06T03:10:34.760 に答える