我在程序集中有这行代码:
HttpContext.Current.Server.MapPath
Run Code Online (Sandbox Code Playgroud)
如果在Web服务中使用程序集,这非常有用.
但是,如果我把它从Web服务中取出,那么它就不会起作用了,因为HTTPContext不存在.
是否有可能欺骗httpContext认为它存在,真的只是为了获得目录的相对路径结构?
我的意思是以某种方式手动创建HTTPContext对象,并为其分配一个基本目录?
更新
是否有更通用的方法:HttpContext.Current.Server.MapPath
可以在可执行文件中工作的东西,以及可以在Web上工作的东西?
HttpContext.Current "获取或设置 HttpContext对象".HttpContext有一个公共构造函数,它接受一个HttpWorkerRequest(抽象,使用SimpleWorkerRequest),你就可以完全伪造HttpContext.
我同意其他人的意见,你可以重构你的代码以消除这种依赖,但有些情况下,你必须伪造HttpContext.Current的东西,在这种情况下,如果你搜索这个问题将出现...
小智 5
在我看来,你需要在另一个对象中包含对HttpContext的调用,然后你可以使用IOC在正确的环境中切换出正确的对象.例如,像IMapPath作为您的接口,然后您的实现可能是HttpMapPath或ConsoleAppMapPath等.
| 归档时间: |
|
| 查看次数: |
1114 次 |
| 最近记录: |