![]() |
1
140
可以使用
不过,我还没有在线程或计时器事件中尝试过。 我考虑的一些(不可行的)解决方案;
|
![]() |
3
13
hostingenvironment不是完美的解决方案,因为它是一个很难模仿的类(参见 How to unit test code that uses HostingEnvironment.MapPath ) 对于那些需要可测试性的人,一个更好的方法可能是按照 https://stackoverflow.com/a/1231962/85196 ,除了作为
结果很容易模仿,在内部使用hostingenvironment,甚至可能解决 ase69s's concern 同时。 |
![]() |
4
2
在启动计时器之前,您不能调用mappath函数,并且只缓存结果吗?在Tick事件中是否绝对需要调用mapPath? |
![]() |
5
2
当计时器超时时,没有当前的HTTP上下文。这是因为计时器事件与特定的HTTP请求无关。 您应该做的是在HTTP上下文可用的地方使用httpserverputility.mappath。您可以在一个请求管道事件(如page_load)或全局.asax事件(如application_start)中执行此操作。 将mappath结果分配给可从timer.elapsed事件访问的变量,在该事件中可以使用path.combine来获取所需特定文件的位置。 |
![]() |
6
0
我认为当时它为空的原因(如果您考虑它的话)是计时器经过的事件不会作为HTTP请求的一部分发生(因此没有上下文)。它是由服务器上的某个东西引起的。 |