sql >> Databáze >  >> RDS >> Mysql

Bezpečnostní výjimka využívající MySQL a Entity Framework na godaddy

Jeden divný. Aplikace ASP.NET s sdíleným hostováním GoDaddy se spouštějí pod střední důvěrou a vytvoření čítače výkonu pravděpodobně vyžaduje plnou důvěru, ale vytvoření čítače výkonu zde není to, co selhává. (a pokud by to selhalo, nerozšířilo by se to, protože výjimky pro vytvoření nástroje perf coutner jsou pohlceny klientským kódem mySQL).

Místo toho selže pokus o přístup k řetězci před vytvořením čítače výkonu. Chyba se týká tohoto řádku kódu v Resources.Designer.cs klienta MySQL:

return ResourceManager.GetString("PerfMonCategoryName", resourceCulture)

Několik věcí k vyzkoušení, v pořadí podle obtížnosti:

  1. ujistěte se, že máte klientské knihovny DLL MySQL v adresáři BIN vaší aplikace a nepokoušíte se načíst klientskou knihovnu DLL z GAC GoDaddy. Nikdy se nespoléhejte na binární soubory dodané GoDaddy, pokud se tomu můžete vyhnout!

  2. přepněte na kulturu EN-US, aby klient nemusel hledat jinou knihovnu DLL a zjišťovat, zda problém nezmizí.

  3. Sestavte klienta .NET ze zdrojového kódu namísto kopírování knihoven DLL z binární distribuce do adresáře BIN vaší aplikace. To usnadní ladění problémů, jako je tento, protože kód mySQL nebude černá skříňka. A během chvilky vám umožní změnit problematická volání načítání zdrojů (nebo napevno zakódovat národní prostředí)! :-)

BTW, v případě, že jste v pokušení nastavit ve svém připojovacím řetězci "Use Performance Monitor=false" a pokusit se problém vyhnout, neobtěžujte se. Problematický kód se spustí bez ohledu na toto nastavení:

    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. aktualizace sloupců s pořadovým číslem mysql

  2. Načítání MySQL pomocí Kivy

  3. Seskupená agregace řetězců / LISTAGG pro SQL Server

  4. Kdy ukončit připojení MySQL pomocí node-mysql?