Welcome Guest Search | Active Topics | Members | Log In | Register

Server.MapPath & Request.MapPath Options · View
rn5a@rediffmail.com
Posted: Friday, October 05, 2007 3:00:54 PM


Rank: Guest
Groups: Guest

Joined: 9/17/2007
Posts: 11,670
Points: -1,200
Date parsed: 05/10/2007 15:00:54
Date: Fri, 05 Oct 2007 22:00:54 -0700

Server.MapPath returns the physical file path that corresponds to the
specified virtual path whereas Request.MapPath maps the specified
virtual path to a physical path. Assuming that a file named Hello.aspx
resides in C:\Inetpub\wwwroot\MyFolder, the output of both

Response.Write(Server.MapPath("Hello.aspx"))

&

Response.Write(Request.MapPath("Hello.aspx"))

is C:\Inetpub\wwwroot\MyFolder\Hello.aspx. So what's the difference
between Server.MapPath & Request.MapPath?

Thanks

Juan T. Llibre
Posted: Saturday, October 06, 2007 3:45:03 AM


Rank: Guest
Groups: Guest

Joined: 9/17/2007
Posts: 11,670
Points: -1,200
Date parsed: 06/10/2007 03:45:03
Date: Sat, 6 Oct 2007 07:45:03 -0400

The way I look at it, there's a single MapPath method
which is called in different contexts with different parameters.

public virtual string MapPath(string virtualPath)
{
return null;
}

public string MapPath(string virtualPath)
{
return this.MapPath(VirtualPath.CreateAllowNull(virtualPath));
}

internal string MapPath(VirtualPath virtualPath)
{
if (this._wr != null)
{
return this.MapPath(virtualPath, this.FilePathObject, true);
}
return virtualPath.MapPath();
}

public string MapPath(string virtualPath, string baseVirtualDir, bool allowCrossAppMapping)
{
VirtualPath filePathObject;
if (string.IsNullOrEmpty(baseVirtualDir))
{
filePathObject = this.FilePathObject;
}
else
{
filePathObject = VirtualPath.CreateTrailingSlash(baseVirtualDir);
}
return this.MapPath(VirtualPath.CreateAllowNull(virtualPath), filePathObject, allowCrossAppMapping);
}

internal string MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)
{
if (this._wr == null)
{
throw new HttpException(SR.GetString("Cannot_map_path_without_context"));
}
if (virtualPath == null)
{
virtualPath = VirtualPath.Create(".");
}
VirtualPath path = virtualPath;
if (baseVirtualDir != null)
{
virtualPath = baseVirtualDir.Combine(virtualPath);
}
if (!allowCrossAppMapping)
{
virtualPath.FailIfNotWithinAppRoot();
}
string str = virtualPath.MapPathInternal();
if (((virtualPath.VirtualPathString == "/") && (path.VirtualPathString != "/"))
&& (!path.HasTrailingSlash && UrlPath.PathEndsWithExtraSlash(str)))
{
str = str.Substring(0, str.Length - 1);
}
InternalSecurityPermissions.PathDiscovery(str).Demand();
return str;
}

public string MapPath(string path)
{
if (this._context == null)
{
throw new HttpException(SR.GetString("Server_not_available"));
}
return this._context.Request.MapPath(path);
}

public string MapPath()
{
return HostingEnvironment.MapPath(this);
}



Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en espanol : http://asp.net.do/foros/
======================================
"Michael Nemtsev" <nemtsev@msn.com> wrote in message news:3d9fba1aec828c9d64fc67e45f0@msnews.microsoft.com...
> Hello rn5a@rediffmail.com,
>
> There are no difference in this aspect, because the Server.MapPath calls the _context.Request.MapPath(path)
> inside its method
>
> ---
> WBR, Michael Nemtsev [.NET/C# MVP] :: blog: http://spaces.live.com/laflour
> "The greatest danger for most of us is not that our aim is too high and we miss it, but that it is too low and we
> reach it" (c) Michelangelo
>
>> Server.MapPath returns the physical file path that corresponds to the
>> specified virtual path whereas Request.MapPath maps the specified
>> virtual path to a physical path. Assuming that a file named Hello.aspx
>> resides in C:\Inetpub\wwwroot\MyFolder, the output of both
>>
>> Response.Write(Server.MapPath("Hello.aspx"))
>>
>> &
>>
>> Response.Write(Request.MapPath("Hello.aspx"))
>>
>> is C:\Inetpub\wwwroot\MyFolder\Hello.aspx. So what's the difference
>> between Server.MapPath & Request.MapPath?
>>
>> Thanks
>>
>
>





Michael Nemtsev
Posted: Saturday, October 06, 2007 6:47:54 AM


Rank: Guest
Groups: Guest

Joined: 9/17/2007
Posts: 11,670
Points: -1,200
Date parsed: 06/10/2007 06:47:54
Date: Sat, 6 Oct 2007 06:47:54 +0000 (UTC)

Hello rn5a@rediffmail.com,

There are no difference in this aspect, because the Server.MapPath calls the
_context.Request.MapPath(path)
inside its method

---
WBR,
Michael Nemtsev [.NET/C# MVP] :: blog: http://spaces.live.com/laflour

"The greatest danger for most of us is not that our aim is too high and we
miss it, but that it is too low and we reach it" (c) Michelangelo


> Server.MapPath returns the physical file path that corresponds to the
> specified virtual path whereas Request.MapPath maps the specified
> virtual path to a physical path. Assuming that a file named Hello.aspx
> resides in C:\Inetpub\wwwroot\MyFolder, the output of both
>
> Response.Write(Server.MapPath("Hello.aspx"))
>
> &
>
> Response.Write(Request.MapPath("Hello.aspx"))
>
> is C:\Inetpub\wwwroot\MyFolder\Hello.aspx. So what's the difference
> between Server.MapPath & Request.MapPath?
>
> Thanks
>


rn5a@rediffmail.com
Posted: Sunday, October 07, 2007 8:14:00 AM


Rank: Guest
Groups: Guest

Joined: 9/17/2007
Posts: 11,670
Points: -1,200
Date parsed: 07/10/2007 08:14:00
Date: Sun, 07 Oct 2007 15:14:00 -0700

On Oct 6, 6:45 am, "Juan T. Llibre" <nomailrepl...@nowhere.com> wrote:
> The way I look at it, there's a single MapPath method
> which is called in different contexts with different parameters.
>
> public virtual string MapPath(string virtualPath)
> {
> return null;
>
> }
>
> public string MapPath(string virtualPath)
> {
> return this.MapPath(VirtualPath.CreateAllowNull(virtualPath));
>
> }
>
> internal string MapPath(VirtualPath virtualPath)
> {
> if (this._wr != null)
> {
> return this.MapPath(virtualPath, this.FilePathObject, true);
> }
> return virtualPath.MapPath();
>
> }
>
> public string MapPath(string virtualPath, string baseVirtualDir, bool allowCrossAppMapping)
> {
> VirtualPath filePathObject;
> if (string.IsNullOrEmpty(baseVirtualDir))
> {
> filePathObject = this.FilePathObject;
> }
> else
> {
> filePathObject = VirtualPath.CreateTrailingSlash(baseVirtualDir);
> }
> return this.MapPath(VirtualPath.CreateAllowNull(virtualPath), filePathObject, allowCrossAppMapping);
>
> }
>
> internal string MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)
> {
> if (this._wr == null)
> {
> throw new HttpException(SR.GetString("Cannot_map_path_without_context"));
> }
> if (virtualPath == null)
> {
> virtualPath = VirtualPath.Create(".");
> }
> VirtualPath path = virtualPath;
> if (baseVirtualDir != null)
> {
> virtualPath = baseVirtualDir.Combine(virtualPath);
> }
> if (!allowCrossAppMapping)
> {
> virtualPath.FailIfNotWithinAppRoot();
> }
> string str = virtualPath.MapPathInternal();
> if (((virtualPath.VirtualPathString == "/") && (path.VirtualPathString != "/"))
> && (!path.HasTrailingSlash && UrlPath.PathEndsWithExtraSlash(str)))
> {
> str = str.Substring(0, str.Length - 1);
> }
> InternalSecurityPermissions.PathDiscovery(str).Demand();
> return str;
>
> }
>
> public string MapPath(string path)
> {
> if (this._context == null)
> {
> throw new HttpException(SR.GetString("Server_not_available"));
> }
> return this._context.Request.MapPath(path);
>
> }
>
> public string MapPath()
> {
> return HostingEnvironment.MapPath(this);
>
> }
>
> Juan T. Llibre, asp.net MVP
> asp.net faq :http://asp.net.do/faq/
> foros de asp.net, en espanol :http://asp.net.do/foros/
> ======================================
>
>
>
> "Michael Nemtsev" <nemt...@msn.com> wrote in messagenews:3d9fba1aec828c9d64fc67e45f0@msnews.microsoft.com...
> > Hello r...@rediffmail.com,
>
> > There are no difference in this aspect, because the Server.MapPath calls the _context.Request.MapPath(path)
> > inside its method
>
> > ---
> > WBR, Michael Nemtsev [.NET/C# MVP] :: blog:http://spaces.live.com/laflour
> > "The greatest danger for most of us is not that our aim is too high and we miss it, but that it is too low and we
> > reach it" (c) Michelangelo
>
> >> Server.MapPath returns the physical file path that corresponds to the
> >> specified virtual path whereas Request.MapPath maps the specified
> >> virtual path to a physical path. Assuming that a file named Hello.aspx
> >> resides in C:\Inetpub\wwwroot\MyFolder, the output of both
>
> >> Response.Write(Server.MapPath("Hello.aspx"))
>
> >> &
>
> >> Response.Write(Request.MapPath("Hello.aspx"))
>
> >> is C:\Inetpub\wwwroot\MyFolder\Hello.aspx. So what's the difference
> >> between Server.MapPath & Request.MapPath?
>
> >> Thanks- Hide quoted text -
>
> - Show quoted text -

Thanks both of you for your inputs but Juan, being a ASP.NET newbie,
your response has left me in a tizzy! More so because I use VB.NET &
not C# & all the C# code you have cited has left me further confused!

BTW, I have come across the word "context" numerous times since I have
started learning ASP.NET but to be honest, I don't understand what
does it exactly mean. Can someone please explain me what does
"context" mean with respect to .NET? As such, I know what does
"context" mean in English!

If giving examples, please try using VB & not C#.

Ron

Juan T. Llibre
Posted: Sunday, October 07, 2007 2:48:25 PM


Rank: Guest
Groups: Guest

Joined: 9/17/2007
Posts: 11,670
Points: -1,200
Date parsed: 07/10/2007 14:48:25
Date: Sun, 7 Oct 2007 18:48:25 -0400

re:
!> Juan, being a ASP.NET newbie, your response has left me in a tizzy!
!> More so because I use VB.NET & not C# & all the C# code you have cited
!> has left me further confused!

The reason I cited the C# code is that ASP.NET ( yes, all of it ) is written in C# !

I used Lutz Roeder's Reflector.Net to look at the code within system.web,
and -after searching for MapPath with Reflector- found those instances.

Pick up a copy...it's free :

http://www.aisto.com/roeder/dotnet/

....and use it to peek inside any ASP.NET assembly.

You'll increase your learning speed very quickly if you understand what runs
inside the ASP.NET methods/assemblies/properties you use in your code.

re:
!> I have come across the word "context" numerous times since I have
!> started learning ASP.NET but to be honest, I don't understand what
!> does it exactly mean. Can someone please explain me what does
!> "context" mean with respect to .NET?

Context, as used in ASP.NET, means the link to the request (httpcontext) made by the client,
which ASP.NET uses as reference in order to send back an appropiate reply.

Usually, context is tied to "current", i.e. "current context",
which simply means the httpcontext associated with the current request.

Basically, an HttpContext object contains information associated with the current page.

If you're using inline code, you can just reference "Context".

If you're using code-behind, you must reference httpContext.Current.

The httpContext object provides access to the intrinsic
Request, Response, and Server properties for the request.

See Scott Allen's article at : http://www.odetocode.com/Articles/112.aspx




Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
======================================
<rn5a@rediffmail.com> wrote in message news:1191795240.806752.135140@22g2000hsm.googlegroups.com...
> On Oct 6, 6:45 am, "Juan T. Llibre" <nomailrepl...@nowhere.com> wrote:
>> The way I look at it, there's a single MapPath method
>> which is called in different contexts with different parameters.
>>
>> public virtual string MapPath(string virtualPath)
>> {
>> return null;
>>
>> }
>>
>> public string MapPath(string virtualPath)
>> {
>> return this.MapPath(VirtualPath.CreateAllowNull(virtualPath));
>>
>> }
>>
>> internal string MapPath(VirtualPath virtualPath)
>> {
>> if (this._wr != null)
>> {
>> return this.MapPath(virtualPath, this.FilePathObject, true);
>> }
>> return virtualPath.MapPath();
>>
>> }
>>
>> public string MapPath(string virtualPath, string baseVirtualDir, bool allowCrossAppMapping)
>> {
>> VirtualPath filePathObject;
>> if (string.IsNullOrEmpty(baseVirtualDir))
>> {
>> filePathObject = this.FilePathObject;
>> }
>> else
>> {
>> filePathObject = VirtualPath.CreateTrailingSlash(baseVirtualDir);
>> }
>> return this.MapPath(VirtualPath.CreateAllowNull(virtualPath), filePathObject, allowCrossAppMapping);
>>
>> }
>>
>> internal string MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)
>> {
>> if (this._wr == null)
>> {
>> throw new HttpException(SR.GetString("Cannot_map_path_without_context"));
>> }
>> if (virtualPath == null)
>> {
>> virtualPath = VirtualPath.Create(".");
>> }
>> VirtualPath path = virtualPath;
>> if (baseVirtualDir != null)
>> {
>> virtualPath = baseVirtualDir.Combine(virtualPath);
>> }
>> if (!allowCrossAppMapping)
>> {
>> virtualPath.FailIfNotWithinAppRoot();
>> }
>> string str = virtualPath.MapPathInternal();
>> if (((virtualPath.VirtualPathString == "/") && (path.VirtualPathString != "/"))
>> && (!path.HasTrailingSlash && UrlPath.PathEndsWithExtraSlash(str)))
>> {
>> str = str.Substring(0, str.Length - 1);
>> }
>> InternalSecurityPermissions.PathDiscovery(str).Demand();
>> return str;
>>
>> }
>>
>> public string MapPath(string path)
>> {
>> if (this._context == null)
>> {
>> throw new HttpException(SR.GetString("Server_not_available"));
>> }
>> return this._context.Request.MapPath(path);
>>
>> }
>>
>> public string MapPath()
>> {
>> return HostingEnvironment.MapPath(this);
>>
>> }
>>
>> Juan T. Llibre, asp.net MVP
>> asp.net faq :http://asp.net.do/faq/
>> foros de asp.net, en espanol :http://asp.net.do/foros/
>> ======================================
>>
>>
>>
>> "Michael Nemtsev" <nemt...@msn.com> wrote in messagenews:3d9fba1aec828c9d64fc67e45f0@msnews.microsoft.com...
>> > Hello r...@rediffmail.com,
>>
>> > There are no difference in this aspect, because the Server.MapPath calls the _context.Request.MapPath(path)
>> > inside its method
>>
>> > ---
>> > WBR, Michael Nemtsev [.NET/C# MVP] :: blog:http://spaces.live.com/laflour
>> > "The greatest danger for most of us is not that our aim is too high and we miss it, but that it is too low and we
>> > reach it" (c) Michelangelo
>>
>> >> Server.MapPath returns the physical file path that corresponds to the
>> >> specified virtual path whereas Request.MapPath maps the specified
>> >> virtual path to a physical path. Assuming that a file named Hello.aspx
>> >> resides in C:\Inetpub\wwwroot\MyFolder, the output of both
>>
>> >> Response.Write(Server.MapPath("Hello.aspx"))
>>
>> >> &
>>
>> >> Response.Write(Request.MapPath("Hello.aspx"))
>>
>> >> is C:\Inetpub\wwwroot\MyFolder\Hello.aspx. So what's the difference
>> >> between Server.MapPath & Request.MapPath?
>>
>> >> Thanks- Hide quoted text -
>>
>> - Show quoted text -
>
> Thanks both of you for your inputs but Juan, being a ASP.NET newbie,
> your response has left me in a tizzy! More so because I use VB.NET &
> not C# & all the C# code you have cited has left me further confused!
>
> BTW, I have come across the word "context" numerous times since I have
> started learning ASP.NET but to be honest, I don't understand what
> does it exactly mean. Can someone please explain me what does
> "context" mean with respect to .NET? As such, I know what does
> "context" mean in English!
>
> If giving examples, please try using VB & not C#.
>
> Ron
>


Users browsing this topic
Guest


Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

Main Forum RSS : RSS

YAFPro Theme Created by Jaben Cargman (Tiny Gecko)
Powered by Yet Another Forum.net version 1.9.1.1 (NET v2.0) - 9/10/2007
Copyright © 2003-2006 Yet Another Forum.net. All rights reserved.
This page was generated in 0.096 seconds.