首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft :您如何实现Server.MapPath?

Microsoft :您如何实现Server.MapPath?
EN

Stack Overflow用户
提问于 2013-05-15 04:51:27
回答 8查看 149.4K关注 0票数 259

由于Microsoft不是MVC,所以不能这样做:

代码语言:javascript
复制
var a = Request.MapPath("~");

也不是这个

代码语言:javascript
复制
var b = Server.MapPath("~");

因为它们位于System.Web命名空间下,而不是System.Web.Http命名空间下。

那么,如何在Web中计算出相对的服务器路径呢?

我以前在MVC中做过这样的事情

代码语言:javascript
复制
var myFile = Request.MapPath("~/Content/pics/" + filename);

这将给我磁盘上的绝对路径:

代码语言:javascript
复制
"C:\inetpub\wwwroot\myWebFolder\Content\pics\mypic.jpg"
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-05-15 05:01:00

您可以在HostingEnvironment.MapPath对象(例如来自静态方法的System.Web对象)不可用的任何上下文中使用HttpContext.Current

代码语言:javascript
复制
var mappedPath = System.Web.Hosting.HostingEnvironment.MapPath("~/SomePath");

另见Server.MapPath和HostingEnvironment.MapPath有什么区别?

票数 505
EN

Stack Overflow用户

发布于 2013-11-14 17:25:44

代码语言:javascript
复制
string root = HttpContext.Current.Server.MapPath("~/App_Data");
票数 17
EN

Stack Overflow用户

发布于 2015-05-12 16:19:48

除了那些无意中遇到这种情况的人之外,在使用HostingEnvironment调用时运行测试级别的一种很好的方法是,如果访问例如UNC共享:\示例\映射到~/ those /您可以执行此操作以避免issues问题:

代码语言:javascript
复制
#if DEBUG
    var fs = new FileStream(@"\\example\file",FileMode.Open, FileAccess.Read);
#else
    var fs = new FileStream(HostingEnvironment.MapPath("~/example/file"), FileMode.Open, FileAccess.Read);
#endif

如果您有在文件上进行本地测试的权限,但在生产过程中需要使用env映射,我发现这很有帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16557122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档