开发者

Server Root and MapPath()

I have a file structure set up like this:

ServerRoot
    applicationRoot
        filePage.aspx
    files
        chart.png

My application page called filePage.aspx uses another app to custom build charts. I need them saved in files folder. This is how our client's production server is set up and I cannot change this.

I do a _page.Server.MapPath("/files") but it gives me a InvalidOperationException and states Failed to map the path '开发者_Python百科/files'.

UPDATE:

So it has to be set up this way MapPath("/"). My local asp.net server can't handle the MapPath that way, but our IIS development box has no problem with it and it works fine. Interesting. How do I get it to save to files?


I believe it's a security violation to go outside the directory structure of the virtual directory in asp.net 2.0 and up. You'll need to make a virtual directory to the directory and use that.


Use

Server.MapPath("~/files")

The ~ represents the root of the web application so the folder returned will be correct no matter which subdirectory you are in.


Try

_page.Server.MapPath("files")


_page.Server.MapPath() will attempt to map from the root of the application (NOT the root of the server).

Try _page.Server.MapPath("../files").

EDIT

You may run into security issues when trying to map outside of your application root. If that is the case, you can do something like this:

Server.MapPath("~").Substring(0, Server.MapPath("~").IndexOf(VirtualPathUtility.ToAbsolute("~").Replace("/", "\"))) + "\files"

This looks rather complex, but essentially says "map my application, then remove the application root from the end and add '\files' instead".

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜