webForumDet fria alternativet

Relativ URL från virtuell katalog?

.NET

8 svar · 440 visningar · startad av anbj

Medlem sedan juli 2000231 inlägg
Frågan#1

Vilket är det smartaste sättet att skriva länkar som ska funka oavsett var i en hierarki de placeras och som ska fungera oavsett vad den virtuella katalogen ligger/heter?

En variant är ju att hålla en applikationsvariabel som talar om var applikationen finns/heter, men det måste väl finnas enklare sätt?

Jag vill mao kunna få fram en länk som ser ut enligt nedan beroende på var min applikation heter/finns:

ex.
/myapp1/mypage.aspx
/myapp32/mypage.aspx
/myapps/myapp1/mypage.aspx

Några smarta tips?

Medlem sedan juli 2000231 inlägg
#2

Request.ApplicationPath verkar vara det jag letar efter :)

Medlem sedan apr. 2004778 inlägg
#3

~/ länkar till applikationens root.

Medlem sedan juli 2000231 inlägg
#4

Nu är jag lost, vad menar du??

Medlem sedan juli 2000231 inlägg
#5

Ah, nu är jag med:

<asp:HyperLink NavigateUrl="~/myPage.aspx" Runat="server">BlaBla</asp:HyperLink>
Medlem sedan dec. 2003824 inlägg
#6

Jag lånar denna tråd lite ...

Jag skall skapa pdf filer on the fly och skickar med en string som är sökvägen dit jag vill spara filen. ~/ detta verkar inte fungera att skicka som parameter till en metod så då har jag gjort en string variabel som innehåller sökvägen till den diren jag vill komma åt.

basePath = "~/reports/" + Username;

basePatch fungerar inte heller att skicka med som parameter till en metod. Jag hamnar i c:\WINDOWS\System32 om jag kör med basePath. Någon som vet hur man ska göra?

Medlem sedan apr. 2004778 inlägg
#7

Om du ska skapa filer behöver du nog göra en Server.Mappath också.
Prova

basePath = Server.MapPath("~/reports/" + Username);
Medlem sedan dec. 2003824 inlägg
#8

Har testat nu men får tyvärr detta fel ...

Ogiltig sökväg för MapPath c:\inetpub\wwwroot\TimeReporter\reports\marlin. En virtuell sökväg förväntas
DirectoryInfo dirInfo = new DirectoryInfo(Server.MapPath(basePath));

Medlem sedan maj 20012 812 inlägg
#9

Du kan inte använda dig av BasePath eftersom denna plocka fram sökvägen till den applikation som kör dina sidor, alltså IIS:en.

Det betyder att din basePath ALLTID kommer att peka på: c:\WINDOWS\System32 oavsett vilka sidor som du kör ifrån.

Om du däremot skriver SOM patrik har föreslagit så kommer du få en säkväg till en Reports mapp i respektive www-applikations basmapp.

- M

254 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)