[C#] Problem z dostępem do bazy MS ACCESS

0

Witam.
Mam poważny problem. Stworzyłem bazę danych w accessie oraz programik kktóry z tą bazą współpracuje. Baza jest na serwerze lokalnym, zaś programik odpalam z pozycji mojego komputera. Programik ogólnie pracuje na tabelach bazy. Problem pojawia się wtedy, gdy program umieszczam w tym samym katalogu na serwerze, co stworzona wcześniej baza. Są jakieś problemy z dostępem do bazy danych, tak sądzę. Błędy z zakresu OleDB.Permision. Zamieszczam poniżej wynik uruchomienia programu na serwerze. Zaznaczam, że jak program odpalam z lokala (baza cały czas na serwerze), to nie ma żadnego problemu, wszystko działa.

LOG:

System.Security.SecurityException: Request for the permission of type 'System.Da
ta.OleDb.OleDbPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicK
eyToken=b77a5c561934e089' failed.
   at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMa
rk& stackMark, Boolean isPermSet)
   at System.Security.PermissionSet.Demand()
   at System.Data.Common.DbConnectionOptions.DemandPermission()
   at System.Data.OleDb.OleDbConnection.PermissionDemand()
   at System.Data.OleDb.OleDbConnectionFactory.PermissionDemand(DbConnection out
erConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection ou
terConnection, DbConnectionFactory connectionFactory)
   at System.Data.OleDb.OleDbConnection.Open()
   at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[]
 datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand co
mmand, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord,
Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)

   at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
   at Katalog08.Program.GetData()
The action that failed was:
Demand
The type of the first permission that failed was:
System.Data.OleDb.OleDbPermission
The Zone of the assembly that failed was:
Intranet
0

Nie sądzę, aby to był probelm z bazą umieszczoną na serwerze lokalnym. Możesz zrobić mały eksperyment (jeśli ci się chce): umieść bazę na serwerze, program lokalnie, zmodyfikuj connectstringa i spróbuj się połączyć. Zapewne się uda. A rozwiązaniem twojego problemu jest CASPOL. Np. taki:
@c:\Windows\Microsoft.Net\Framework\v2.0.50727\caspol.exe -quiet -pp off -m -ag 1 -url file:"\sciezka do aplikacji*" FullTrust

0
Marcin.Miga napisał(a)

umieść bazę na serwerze, program lokalnie, zmodyfikuj connectstringa i spróbuj się połączyć. Zapewne się uda.

No tak działa, pisałem wcześniej. Sęk w tym że to ma działać na serwerze, nie ma innej opcji.

0

Więc użyj CASPOL-a - tak jak juz wcześniej pisałem.

0

okej, w porządku. Możesz mi opisać ewentualnie te parametry które dodałeś, lub jeżeli są to jakieś standardowe, to czy możesz rzucić jakimś linkiem z dokładnym opisem (najlepiej PL, ale ENG też nie pogardzę :) )

PdR

0

caspol -?
Wyjaśnienie (właśnie stamtąd)
caspol -m[achine]
Modyfikator umożliwiający wykonywanie dodatkowych poleceń na poziomie urządzenia

caspol -ag
caspol -addgroup <etykieta|nazwa_grupy_nadrzędnej> <członkostwo>
<nazwa_zestawu_uprawnień> <flagi>
Dodaje grupę kodów do grupy nadrzędnej <etykieta|nazwa_grupy_nadrzędnej> z określonym członkostwem, zestawem uprawnień i flagami

caspol -q[uiet]
Wyłącza dla tego polecenia monit o zmianie zasad

-url <url> Adres URL</url>

1 użytkowników online, w tym zalogowanych: 0, gości: 1