Avatar billede madmital Nybegynder
09. februar 2007 - 18:57 Der er 17 kommentarer og
1 løsning

asp.net 2 og virtual directory

Heyza alle.

Jeg har et problem, som jeg er ved at gå super-bonanza over.
Jeg har netop færdiggjort et .net2-projekt som skal køre på min webserver (Win 2K3, IIS6). Det virker også ganske glimrende når jeg uploader filerne (precompiled) og åbner sitet i en browser.

Problemet opstår fordi jeg gerne vil kunne bruge applikationen på flere websites hostet på serveren. Dertil vil jeg lægge alle fælles filer i et bibliotek og derefter lave et virtual directory til de web sites, som skal bruge applikationen.
Denne procedurer kører allerede i anden sammenhænge på "alm." asp-sites.
Men når jeg opretter et virtual directory til de fælles filer, så kan .NET-applikationen ikke se mappen!
Jeg har givet fællesmappen fuld skrald af rettigheder og har prøvet at trykke på stort set alle knapper i web site-indstillinger i IIS uden noget success overhovedet.

Nogen, der har oplevet noget lignende eller har forslag?
Avatar billede snepnet Nybegynder
09. februar 2007 - 19:31 #1
Har du konfigureret den virtuelle som en application?
(ellers prøv at gøre det)
Mvh
Avatar billede snepnet Nybegynder
09. februar 2007 - 19:31 #2
Ellers må du gerne poste de fejlmeddelelser du får.
Mvh
Avatar billede madmital Nybegynder
09. februar 2007 - 21:32 #3
Yep, har prøvet det.
Jeg får fejlen "Could not find a part of the path..." når jeg prøver at læse en tekstfil det virtuelle directory, og error stacken siger:

[DirectoryNotFoundException: Could not find a part of the path 'D:\Sites\mital_danline_dk\http\dnmt\FCKeditor\_dnm\version.txt'.]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +2014176
System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy) +998
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) +115
System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize) +85
System.IO.StreamReader..ctor(String path, Encoding encoding) +16
System.IO.File.ReadAllLines(String path, Encoding encoding) +93
System.IO.File.ReadAllLines(String path) +99
login.Page_Load(Object sender, EventArgs e) in c:\dnm\login.aspx.vb:19 System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061
Avatar billede dr_chaos Nybegynder
10. februar 2007 - 09:58 #4
Fejlen ligger i formodentlig i den Server.Mappath du bruger til at finde din tekst fil.
Du skal teste lidt frem og tilbage for at finde den rette sti.
Avatar billede madmital Nybegynder
10. februar 2007 - 16:20 #5
Ja, det er korrekt.
Efter MEGET legen frem og tilbage fandt jeg ud af, at jeg i stedet for
  Request.physicalApplicaitonPath & "FCKeditor"
skulle bruge
  Server.MapPath("FCKeditor")

Så nu virker det med de delte html/js-filer.

Til gengæld er der opstået et andet problem, for nu vil jeg gerne lave samme stunt med nogle af de gænge classes i projektet...både af opdaterings- og pladshensyn.
Så nu forsøger jeg at dele "App_Code"-biblioteket som virtual directory, men får en anden fejl:
The path '/ncdnm/App_Code/' maps to a directory outside this application, which is not supported.

Jeg kan at hver eneste request til startsiden danner en ny warning entry i event log'en under "application", og der står at "NETWORK SERVICE"-konto ikke er authorized og ikke anvender impersonation.
Se, det forstår jeg så heller ikke. Konto har fuld adgang til den fysiske mappe hvor de fælles filer ligger, og der er en <location>-key i web.config til "App_Code".
Problemet vedrører jo sikkert noget med rettigheder, men nu er jeg sgu på bar bund igen... :(
Avatar billede dr_chaos Nybegynder
10. februar 2007 - 16:35 #6
Det kan du ikke gøre. som du også for af vide i fejlmeddelelsen:
The path '/ncdnm/App_Code/' maps to a directory outside this application, which is not supported.
Hvis du vil dele din app_Code filer kan du måske ligge dem i et class library.
Men jeg tvivler på at det kan lade sig gøre.
Avatar billede madmital Nybegynder
10. februar 2007 - 17:35 #7
Nej, jeg havde også min tvivl.
Men jeg kan se rundt omkring (læs: Google) at mange får samme fejl når de prøver at lave tricket med fx. App_GlobalResources, og det er vel også et application-specifikt bibliotek ligesom App_Code - eller er der noget jeg helt har misforstået?

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=15323&SiteID=1
http://forums.asp.net/thread/1376728.aspx
Avatar billede dr_chaos Nybegynder
10. februar 2007 - 20:46 #8
Ja det er det.
Hvis man skal dele nogen dll skal man ligge den i GAC på serveren. Men det kræver adgang til selve serveren og generelt kan det blive noget rodet noget.
Avatar billede madmital Nybegynder
10. februar 2007 - 21:09 #9
Undskyld...GAC?
Og jeg har fysisk adgang til serveren.
Har du mere info/referencer?
Avatar billede dr_chaos Nybegynder
10. februar 2007 - 21:37 #10
Avatar billede madmital Nybegynder
10. februar 2007 - 22:01 #11
Tja...jeg kan godt se hvad du ment med "generelt kan det blive noget rodet noget".

Det kan være jeg ganske enkelt bliver nødt til at finde mig i, at skulle inkludere samtlige classes i alle "installationer" af applikationen...selvom det ikke huer mig.
Avatar billede dr_chaos Nybegynder
10. februar 2007 - 22:11 #12
hvad gør de klasser ?
Du kan måske lave en webservice som du kan lægge centralt og der igennem give adgang til klasserne.
Avatar billede madmital Nybegynder
11. februar 2007 - 08:09 #13
Klasserne er stort set hele "motoren" i applikationen og indeholder rutiner til load, save, data/billedbehandling, kryptering, kompression osv.

Når/hvis jeg laver opdateringer/finder fejl ville det jo være smart at kunne opdaterer source-filer ét sted og ikke x-antal hundrede.
Avatar billede dr_chaos Nybegynder
11. februar 2007 - 08:32 #14
Så synes jeg du skulle lave en webservice frontend til hele det system.
Du kan lave webmethods som returnerer det du har behov for.
Avatar billede madmital Nybegynder
11. februar 2007 - 09:14 #15
Det må jeg kigge på (skal starte helt fra scratch hvad det angår).
Avatar billede dr_chaos Nybegynder
11. februar 2007 - 09:59 #16
Du kan evt. starte her:
http://quickstart.developerfusion.co.uk/quickstart/webservices/

Jeg tillader mig at lægge et svar, det er helt op til dig om du vil accepterer det.
Avatar billede madmital Nybegynder
11. februar 2007 - 10:43 #17
Dén fik du....jeg tror ikke vi kommer meget nærmere i denne omgang :)
Avatar billede dr_chaos Nybegynder
11. februar 2007 - 10:56 #18
tak :)
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