Avatar billede oleko Nybegynder
25. december 2007 - 09:31 Der er 4 kommentarer

Upload af Excel regneark giver security exception

Er der nogen som har et bud på årsagen til dette problem.
Jeg forsøger at læse et uploaded Excel regneark.
I mit lokale testmiljø virker det, men på produktionsserveren kommer den ud med:
System.Security.SecurityException: Request failed
Programkoden ser sådan ud:

String sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtUpload.PostedFile.FileName.Trim() + ";Extended Properties=Excel 8.0;";
OleDbConnection objConn = new OleDbConnection(sConn);
objConn.Open();

Variablen txtUpload er en html servercontrol med type=file.
Fejlen kommer lige inden objConn.Open();
Da regnearket ikke er blevet gemt på serveren, burde der ikke være problemer med adgangstilladelse til serverens filsystem.
Avatar billede nielle Nybegynder
25. december 2007 - 10:17 #1
To ting som kunne være galt.

1) Du skal angive hvor at Excel filen ligger i forhold til serverens filstruktur. Brug Server.MapFile til det.

2) Det kan da sagtens være noget mer adgangstilladelse: Den bruger du benytter til at uploade filen med er ikke den samme som køre dit asp.Net script. Dermed er det heller ikke sikkert at den har læserrettigheder til filen.
Avatar billede oleko Nybegynder
26. december 2007 - 16:41 #2
På tidspunktet hvor fejlen opstår er Excel filen ikke gemt på serveren (den skal heller ikke gemmes, men skal bruges til at opdatere i en database).
Jeg har Googlet lidt og er nu tilbøjelig til at tro, at det måske har noget at gøre med trust level på serveren.
Avatar billede nielle Nybegynder
26. december 2007 - 19:41 #3
Hvordan vil du connecte til excel arket hvis det ikke er gemt på serveren (og du skrev i øvrigt at der var uploadet i spørgsmålet)?

Du kan i hvertfald ikke connecte til det på din egen maskine fra et Asp.Net side.
Avatar billede oleko Nybegynder
27. december 2007 - 11:54 #4
Ja, jeg udtrykte mig ikke helt klart i spørgsmålet.
For at omgå problemet har har jeg nu forsøgt med at læse Excel arket som en csv fil, hvilket fungerer fint.
Man kan godt læse en uploadet fil på serveren uden at gemme den på serveren. Koden hertil kan f.eks. se sådan ud:
if(txtUpload.PostedFile.ContentLength > 0)
{
  System.Text.Encoding enc = new System.Text.UTF7Encoding();
  StreamReader sr = new StreamReader(txtUpload.PostedFile.InputStream, enc);
  string strLine = sr.ReadLine();
  while (strLine != null)
    {
    Response.Write("Linie " + ix + ": " + strLine + "<br>");
    strLine = sr.ReadLine();
    }
}   
Jeg tror stadigvæk at problemet med Excel arket på serveren har noget at gøre med trust level. Som et forsøg prøvede jeg med trust level="High" i web.config i mit lokale testmiljø og fik her samme Security exception som på serveren.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester