我发现每次都使用 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/