Accesso a file da dll

domenica 16 maggio 2010 - 14.23

Carlik Profilo | Junior Member

Salve , nel mio team stiamo creando una webapplication.Io mi occupo dell'API(VB 2005) , una mia collega della GUI(ASP.NET). Il mio problema consiste nell'accesso a dei file da una delle mie librerie quando i riferimenti alle stesse vengono creati nella web application.
Infatti quando provavo le mie dll da un minigestionale , scrivevo

doc.Load("./config.xml")

per accedere al file xml. Adesso invece non riesco in nessun modo ad accedere ad alcun percorso(neanche nella directory virtuale).
Ho provato un po' di tutto ,server.mappath, etc , ma non sono riuscito a risolvere. qualcuno sa aiutarmi?

TOPOAMORE Profilo | Expert

Ciao...
ma che errore ti da???
ASP 2.0 - VB 2008

Carlik Profilo | Junior Member

Nel caso di

Try
doc.Load("./config.xml")
Catch ex As Exception
doc = Nothing
End Try
l'eccezione è

Impossibile trovare il file 'C:\Users\Carlo\Documents\Visual Studio 2005\Projects\config.xml'.
(Questo errore me lo dà da quando ho aggiunto il file config alla soluzione web application)

Gluck74 Profilo | Guru

Ciao,
ti chiedo qualche informazione:

1 - i file che stai cercando di aprire, in che posizione sono? Sono nella cartella del sito web o una sua sottocartella?

2 - il file web.config che hai inserito per l'applicazione web, per caso imposta qualche restrizione di accesso alle cartelle? o utilizza "impersonate" per specificare un utente del processo?

3 - Stessa cosa per la dll: è configurata per essere eseguita da un utente in particolare?

Carlik Profilo | Junior Member

>Ciao,
>ti chiedo qualche informazione:
>
>1 - i file che stai cercando di aprire, in che posizione sono?
>Sono nella cartella del sito web o una sua sottocartella?
>
>2 - il file web.config che hai inserito per l'applicazione web,
>per caso imposta qualche restrizione di accesso alle cartelle?
>o utilizza "impersonate" per specificare un utente del processo?
>
>3 - Stessa cosa per la dll: è configurata per essere eseguita
>da un utente in particolare?

1. Il file sta dove voglio io nel senso che posso metterlo dove voglio: nella winApp stava sotto bin/debug , qui può stare dove voglio , anche nella cartella virtuale di iis

2. il web config non l'ho toccato :

<?xml version="1.0" encoding="utf-8"?>

<configuration>

<appSettings/>
<connectionStrings>
<add name="connString" connectionString="Persist Security Info=False;User ID=sa;Initial Catalog=Mnemosine;Data Source=(local)\SQLEXPRESS" providerName="System.Data.SqlClient"/>
</connectionStrings>

<system.web>
<!--
Impostare compilation debug="true" per inserire i
simboli di debug nella pagina compilata. Poiché tale operazione ha effetto
sulle prestazioni, impostare questo valore su true
solo durante lo sviluppo.

Opzioni di Visual Basic:
Impostare strict="true" per impedire qualsiasi conversione di tipi di dati
in caso di possibile perdita di dati.
Impostare explicit="true" per imporre la dichiarazione di tutte le variabili.
-->
<compilation debug="true" strict="false" explicit="true" />
<pages>
<namespaces>
<clear />
<add namespace="System" />
<add namespace="System.Collections" />
<add namespace="System.Collections.Specialized" />
<add namespace="System.Configuration" />
<add namespace="System.Text" />
<add namespace="System.Text.RegularExpressions" />
<add namespace="System.Web" />
<add namespace="System.Web.Caching" />
<add namespace="System.Web.SessionState" />
<add namespace="System.Web.Security" />
<add namespace="System.Web.Profile" />
<add namespace="System.Web.UI" />
<add namespace="System.Web.UI.WebControls" />
<add namespace="System.Web.UI.WebControls.WebParts" />
<add namespace="System.Web.UI.HtmlControls" />
</namespaces>
</pages>
<!--
La sezione <authentication> consente di configurare
la modalità di autenticazione della protezione utilizzata da
ASP.NET per identificare un utente in ingresso.
-->
<authentication mode="Windows" />
<!--
La sezione <customErrors> consente di configurare
l'operazione da eseguire in caso di errore non gestito
durante l'esecuzione di una richiesta. In particolare,
consente agli sviluppatori di configurare le pagine di errore HTML
in modo che vengano visualizzate al posto dell'analisi dello stack dell'errore.

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
</system.web>
</configuration>


3.La dll non ha particolari permessi...

Gluck74 Profilo | Guru

Il problema è quindi che il file non può essere letto dal processo che gira per il sito web.
Un sito web per non essere "malevolo", gira per forza di cose con un utente speciale "se non diversamente specificato", che ha di permessi molto ristretti.

Quindi per poter accedere ad un file, questo deve essere per forza di cose in una cartella mappata sotto il sito (una virtual directory).
Se lo metti in un altro posto non accedibile dal sito, non puoi probabilmente leggerlo.

Inoltre usa sempre il comando Server.mapPath(<path e nome file nella cartella virtuale>) che ti restituisce il percorso fisico sul disco.


ciao

Carlik Profilo | Junior Member

>Il problema è quindi che il file non può essere letto dal processo
>che gira per il sito web.
>Un sito web per non essere "malevolo", gira per forza di cose
>con un utente speciale "se non diversamente specificato", che
>ha di permessi molto ristretti.
>
>Quindi per poter accedere ad un file, questo deve essere per
>forza di cose in una cartella mappata sotto il sito (una virtual
>directory).
>Se lo metti in un altro posto non accedibile dal sito, non puoi
>probabilmente leggerlo.
>
>Inoltre usa sempre il comando Server.mapPath(<path e nome
>file nella cartella virtuale>) che ti restituisce il percorso
>fisico sul disco.
>

Perdonami , ma quello che mi dici non mi aiuta : sono sicuro che se tu avessi davanti il mio problema lo risolveresti in 1,5 secondi ...
per ciò che riguarda il Server.mappath , cosa devo importare? se importo system.web continua a non farmelo eseguire (errore nella compilazione della dll)
Inoltre volevo chiedere se ponendo il file in una posizione qualsiasi all'interno della cartella virtuale del sito , esso veniva trovato.
Ciao e grazie

Gluck74 Profilo | Guru

Perdonami, ma forse mi è sfuggito qualcosa.
Il codice che ti da errore non fa parte del sito? è una dll esterna?
se fosse così le cose cambiano.

com'è impostata la tua soluzion? (web appl. + dll ? )

Carlik Profilo | Junior Member

>Perdonami, ma forse mi è sfuggito qualcosa.
>Il codice che ti da errore non fa parte del sito? è una dll esterna?
>se fosse così le cose cambiano.
>
>com'è impostata la tua soluzion? (web appl. + dll ? )

Sì! Il codice che mi dà errore è in una dll esterna.Io ho creato la dll e finora l'ho provata grazie ad una winapp di prova(per questo motivo utilizzavo la Load dell'XMLDocument).
La mia soluzione è impostata come webapplication + riferimento alle dll create!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5