Access DB in MediumTrust betreiben

Eine Microsoft Access DB als Datenquelle für eine dotNet Anwendung in MediumTrust Umgebungen betreiben.


Durch teilw. unmanaged Code im DB Provider war das herstellen einer Verbindung in ASP.net 1.1 Verbindungen und eines MediumTrust Levels zu einer Access Datenbank ein Problem. Dieser Artikel beschreibt, wie man nun in ASP.net 2.0 eine Verbindung über den überarbeiten Provider herstellen kann.

Beispiel für einen MS Access-Datenbank-Zugriff via ADO.net 2.0

Wichtig! Das folgende Beispiel funktioniert nur unter ASP.net 2.0. In ASP.net 1.x und Medium Trust Umgebungen (welche für das Sharedhosting typisch sind) würde dieser Code zu einer Security Exception führen da der dazugehörige OleDb Provider erst seit ASP.net 2.0 bzw. ADO.net 2.0 vollständig auf managed Code basiert. Außerdem ist das Datensteuerelement GridView ebenfalls eine Neuerung von ASP.net 2.0, kann aber genauso gut durch das quasi Vorgänger DataGrid Control in diesem Beispiel ersetzt werden, das es auch in ASP.net 2.0 noch weiterhin gibt.

<%@ Page Language="C#" AutoEventWireup="True"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script language="c#" runat="server">
void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
// Erstellen einer neuen OLE DB Verbindung zur testdb.mdb
OleDbConnection theConnection = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0; " +
"Data Source=" + Server.MapPath("testdb.mdb"));

// Öffnen der Verbindung
theConnection.Open();

// Zuweisen eines SQL Befehls zur Verbindung
OleDbCommand theCmd = new OleDbCommand("Select * FROM Tabelle1", theConnection);

// Anzeigen der Daten bzw. Bindung an ein Datensteuerelement
using(OleDbDataReader oldbr = theCmd.ExecuteReader(CommandBehavior.CloseConnection))
{
GridView1.DataSource = oldbr;
GridView1.DataBind();
}
}
}
</script>
<html>
<head></head>
<body>
<form title="form1" runat="server">
<asp:GridView title="GridView1" runat="server">
</asp:GridView>
</form>
</body>
</html>

  • 12.02.2018 19:05:09