Signalr Hub文件中的HttpContext为null

zai*_*man 8 c# asp.net server.mappath signalr

我有一个SignalR集线器.当客户端断开连接时,我想执行文件操作.要做到这一点,我需要访问Server.MapPath.

但是,由于我的Hub类不是.aspx或Web服务,因此没有HttpContext也没有请求.

我想过将IO工作委托给HTTP请求处理程序,但是我不能用相对URI创建WebRequest,我需要能够在不同的位置部署解决方案.

如何才能在System.IOSignalR中获取本地路径?

System.IO.Directory.GetCurrentDirectory() 给我IIS工作进程的位置.

Sar*_*nan 14

您可以尝试以下方法

 var path = (System.Web.HttpContext.Current == null)
                    ? System.Web.Hosting.HostingEnvironment.MapPath("~/")
                    : System.Web.HttpContext.Current.Server.MapPath("~/");
Run Code Online (Sandbox Code Playgroud)

它使用hostingenvironment来获取正在执行的应用程序的路径.