sql >> データベース >  >> RDS >> Mysql

godaddyでMySQLとEntityFrameworkを使用したセキュリティ例外

    奇妙なもの。 GoDaddy共有ホスティングASP.NETアプリは中程度の信頼の下で実行され、パフォーマンスカウンターの作成にはおそらく完全な信頼が必要ですが、パフォーマンスカウンターの作成はここで失敗しているわけではありません。 (失敗した場合、perf coutner作成の例外がmySQLクライアントコードに飲み込まれるため、伝播されません)。

    代わりに、perfカウンターを作成する前に、文字列リソースにアクセスしようとして失敗します。失敗は、MySQLクライアントのResources.Designer.csの次のコード行にあります:

    return ResourceManager.GetString("PerfMonCategoryName", resourceCulture)
    

    難易度の高い順に、試すべきいくつかのこと:

    1. アプリのBINディレクトリにMySQLクライアントDLLがあり、GoDaddyのGACからクライアントDLLを読み込もうとしていないことを確認してください。回避できる場合は、GoDaddyが提供するバイナリに依存しないでください!

    2. EN-USカルチャに切り替えて、クライアントが別のリソースDLLを探しに行く必要がないようにし、問題が解決するかどうかを確認します。

    3. DLLをバイナリディストリビューションからアプリのBINディレクトリにコピーするのではなく、ソースコードから.NETクライアントを構築します。 mySQLコードはブラックボックスではないため、これにより、このような問題のデバッグが容易になります。そして、ピンチで、問題のあるリソースフェッチ呼び出しを変更(またはロケールをハードコーディング)できるようになります! :-)

    ところで、問題を回避するために接続文字列に「Use Performance Monitor =false」を設定したい場合は、気にしないでください。問題のあるコードは、その設定に関係なく実行されます:

        public PerformanceMonitor(MySqlConnection connection)
        {
            this.connection = connection;
    
            //// this line is where it bombs
            string categoryName = Resources.PerfMonCategoryName;
    
            //// this line is affected by connection string setting
            if (connection.Settings.UsePerformanceMonitor && procedureHardQueries == null)
            {
                try
                {
                    procedureHardQueries = new PerformanceCounter(categoryName,
                                                                  "HardProcedureQueries", false);
                    procedureSoftQueries = new PerformanceCounter(categoryName,
                                                                  "SoftProcedureQueries", false);
                }
                catch (Exception ex)
                {
                    Logger.LogException(ex);
                }
            }
        }
    


    1. 行がPostgreSQLに存在するかどうかを最速でチェック

    2. OracleのTZ_OFFSET()関数

    3. 選択したポイントから特定の距離にあるすべてのアドレスを見つけるための最良のアプローチは何ですか

    4. SQLServerのCHARとVARCHARの違いは何ですか-SQLServer/T-SQLチュートリアルパート31