不使用 httpcontext 获取应用程序路径。 (asp.net)
怎么做呢?
我不想使用这个:
HttpContext.Current.Server.MapPath
是否有一个类似的函数,我可以在不需要 httpcontext 的情况下调用?
例如,如果启动一个线程做一些事情,我无法使用 httpcontext,但我仍然需要获取应用程序的路径。不,我不能将上下文作为参数传递或从共享变量中读取它。
How to do it?
I don't want to use this:
HttpContext.Current.Server.MapPath
Is there a similar function that I can call without requiring a httpcontext?
For example if a start a thread doing some stuff i cant use the httpcontext, but i still need to get the path of the app. And no i can't pass the context as an argument or read it from a shared var.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用
HttpRuntime.AppDomainAppPath
< /a> 属性。Use the
HttpRuntime.AppDomainAppPath
property.有多个选项:
HttpRuntime。 AppDomainAppPath
AppDomain.CurrentDomain.BaseDirectory
HostingEnvironment.ApplicationPhysicalPath
我建议使用AppDomain.CurrentDomain.BaseDirectory,因为它可以在任何类型的项目中使用,并且可以设置。
例如,您可以通过命令将 UnitTest BaseDirectory 设置为将 Web 根文件夹指向 AppDomain.CurrentDomain.BaseDirectory:
There are several options:
HttpRuntime.AppDomainAppPath
AppDomain.CurrentDomain.BaseDirectory
HostingEnvironment.ApplicationPhysicalPath
I would recommend to use AppDomain.CurrentDomain.BaseDirectory, because it can be used in any type of project and it can be set up.
You can for example set UnitTest BaseDirectory to point your web root folder the AppDomain.CurrentDomain.BaseDirectory by command:
在寻找计算 URL(Web 应用程序中的永久链接)以在某些电子邮件通知中提供的方法时,我遇到了这个问题。
这些是在另一个线程上生成的,因此
HttpContext
不可用,我想避免将 URL 相关信息放入用于生成电子邮件的队列表中。代码:
该函数返回完整的虚拟路径,例如:
http://full-host-name/AppName
。当然,也有一些限制:硬编码协议(http
、https 等)以及使用主机名
而不是域名
(如果多个域会失败)是在一台机器上定义的)。I have run across this question when looking for way to compute an URL (permalinks in the Web application) to provide in some e-mail notifications.
These were generated on another thread, so
HttpContext
was not available and I wanted to avoid putting URL related information in the queue table used to generate the e-mails.The code:
The function returns the full virtual path like:
http://full-host-name/AppName
. Of course, there are some limitations: hardcoded protocol (http
, https etc.) and usinghostname
instead ofdomain name
(fails if multiple domains are defined on a single machine).