我想获取WCF应用程序的工作文件夹.我怎么才能得到它?
如果我试试
HttpContext.Current.Request.MapPath(HttpContext.Current.Request.ApplicationPath)
Run Code Online (Sandbox Code Playgroud)
我得到一个空引用异常(Http.Current对象为null).
我对工作文件夹的意思是我的WCF服务正在运行的文件夹.如果我设置aspNetCompatibilityEnabled="true"
,我收到此错误:
服务器没有提供有意义的回复; 这可能是由于合同不匹配,过早的会话关闭或内部服务器错误造成的.
我正在尝试检测目录是否存在,但在这种特殊情况下,我的目录是网络位置.我使用的是VB.NET My.Computer.FileSystem.DirectoryExists(PATH)
,而且更通用System.IO.Directory.Exists(PATH)
,在这两种情况下,系统响应都是错误的.我检查了PATH,我可以在MyComputer文件夹中查看它.如果我调试程序并观察My.Computer.FileSystem.Drives
变量,则网络位置不会出现在该列表中.
更新:我检查并在Windows XP中响应为真,但在Windows 7中没有.
更新2:我测试了两个建议的解决方案,但我仍然遇到同样的问题,在下图中你会看到我可以使用资源管理器访问但我的程序不能.该GetUNCPath
函数返回有效路径(无错误),但Directory.Exists
stil返回false.
我还尝试使用UNC路径"\\ Server\Images"; 同样的结果.
更新3: 如果我无法与网络驱动器链接,我如何直接链接到UNC路径?我发现如果我在正常模式下运行VS,它可以工作,但我的软件必须以管理员模式运行.那么,有没有办法检查网络目录是否存在?
我公司的代码库包含以下C#行:
bool pathExists = Directory.Exists(path);
Run Code Online (Sandbox Code Playgroud)
在运行时,字符串path
恰好是公司内部网上文件夹的地址 - 类似于\\company\companyFolder
.当从我的Windows机器到内联网的连接启动时,这可以正常工作.但是,当连接断开时(就像今天一样),执行上面的行会导致应用程序完全冻结.我只能通过使用任务管理器将其删除来关闭应用程序.
当然,我宁愿在这种情况下Directory.Exists(path)
回归false
.有没有办法做到这一点?
c# ×2
.net-4.0 ×1
connection ×1
httpcontext ×1
networking ×1
path ×1
vb.net ×1
wcf ×1
windows ×1