sql >> Database teknologi >  >> RDS >> Mysql

Sikkerhedsundtagelse ved hjælp af MySQL og Entity Framework på godaddy

Underlig en. GoDaddy shared-hosting ASP.NET-apps udføres under Medium Trust, og oprettelse af perf-tæller kræver sandsynligvis fuld tillid, men perf-tæller-oprettelse er ikke det, der fejler her. (og hvis det mislykkedes, ville det ikke forplante sig, da undtagelser til oprettelse af perf countner sluges af mySQL-klientkode).

I stedet mislykkes det at forsøge at få adgang til en strengressource før oprettelse af perf-tæller. Fejlen skyldes denne kodelinje i Resources.Designer.cs i MySQL-klienten:

return ResourceManager.GetString("PerfMonCategoryName", resourceCulture)

Et par ting at prøve, i stigende sværhedsgrad:

  1. sørg for, at du har MySQL-klient-DLL'erne i din apps BIN-mappe, og du forsøger ikke at indlæse klient-DLL'en fra GoDaddy's GAC. Stol aldrig på GoDaddy-leverede binære filer, hvis du kan undgå det!

  2. skift til EN-US-kultur, så klienten ikke behøver at gå på jagt efter en anden ressource-DLL, og se om problemet forsvinder.

  3. Byg .NET-klienten ud fra kildekoden i stedet for at kopiere DLL'er fra en binær distribution til din apps BIN-mappe. Dette vil gøre problemer som dette nemmere at fejlfinde, da mySQL-koden ikke vil være en sort boks. Og på et øjeblik vil du lade dig ændre de problematiske ressourcehentende opkald (eller hårdkode lokaliteten)! :-)

BTW, hvis du er fristet til at indstille "Use Performance Monitor=false" i din forbindelsesstreng for at forsøge at undgå problemet, så gider du ikke. Den problematiske kode bliver eksekveret uanset denne indstilling:

    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. Kunne ikke opdatere .mdf-databasen, fordi databasen er skrivebeskyttet (Windows-program)

  2. Parametriserede forespørgsler med psycopg2 / Python DB-API og PostgreSQL

  3. tilslutning af MATLAB 7.0 og MYSQL

  4. Sådan får du månedens navn fra en dato i Oracle