c# - 我们总是需要使用 context.Server.MapPath 吗?如果我缓存结果怎么办?

标签 c# asp.net contextpath

我发现每次都使用 context.Server.MapPath 来确定 app_data 文件夹下某个已知目录/文件的物理位置很奇怪。我有一个理解,一旦应用程序正在运行,必须先关闭它才能更改其物理位置。如果这是真的,那么我可以在 application_start 上缓存 app_data 的物理路径,并在其执行生命周期内使用缓存值!

我需要专家对此事的意见。我的假设对吗?如果不重新启动应用程序,就不可能更改应用程序的物理路径,对吗?

如果这是真的,它将为我节省大量时间,而不必在每个奇怪的方法中将上下文作为参数包含在内!

方法接口(interface)的清晰度对我来说最重要,而 不符合这一点。

顺便说一句,我使用的是共享主机,所以我无法控制应用程序的物理位置。这重要吗?

最佳答案

路径是相对于当前请求的,所以 MapPath("foo") 可能对不同 url 的请求有不同的结果。但是,如果您的路径是相对于应用根目录 ("~/foo") 或相对于站点根目录 ("/foo") 的,您几乎可以缓存到您心中的内容。

可能存在人们在执行期间在 IIS 中添加虚拟目录的极端情况,但这几乎不可能,而且无论如何几乎都会造成痛苦。

关于c# - 我们总是需要使用 context.Server.MapPath 吗?如果我缓存结果怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6191566/

相关文章:

c# - 在 Windows 8 上获取操作系统、平台和设备信息

php - 你能举例说明在 flex 应用程序中使用 php 吗?

java - 访问上下文路径(根文件夹)在 Spring Boot 应用程序中不显示登录页面

c# - 使用 MVVM 框架动态更改 ComboBox 中元素的可见性

c# - 想从类中调用 Controller 方法并在不向 Controller 发出请求的情况下获取 Controller 上下文?

c# - 代码分析不适用于 nuget 包中的规则集(来自 .props)

.net - Ajax 调用超出可接受的 URI 长度

c# - 无法解析远程名称 - webclient

tomcat - 在同一个 jboss-4.0.3 中部署两个具有不同域名但相同上下文路径的 war

java - 配置虚拟主机 Apache