无法通过VPN编程访问网络路径
本文关键字:访问 网络 路径 编程 VPN | 更新日期: 2023-09-27 18:18:06
我正在尝试使用网络路径(创建目录,写入和读取文件)从一个Web服务在ASP.NET。
在我的办公室,网络路径和我的笔记本电脑在同一个局域网中,一切都很好,但是当我试图通过VPN连接到网络路径时,创建目录失败,出现"Access to path is denied"错误。
奇怪的是,从Windows资源管理器我可以完美地访问这样的路径,给我的VPN凭证,我存储在Windows凭证钱包。
我也试图将我的IIS应用程序池身份设置为"网络服务",但没有运气。
你能帮我一下吗?Thank you very much
<标题>编辑:当我尝试执行像
这样的语句时Directory.CreateDirectory(@"''my'network'path");
从我的Visual Studio 2010中的一个简单的控制台应用程序项目中,它可以完美地工作,并且创建了目录。
问题是,当我在本地IIS下运行的web服务的业务逻辑中遇到这样的语句时(我通过VS2010中的"Attach Process…"调试工具连接到)
标题>我可能没有你直接问的所有细节,但如果你通过Visual Studio和VPN运行这个服务,可以看看这篇很棒的文章,在CodeBetter。
runas /netonly /user:domain'username “C:'ProgramFiles'Path'to'your'visualstudio”
我没有我面前的电脑,但我记得我创建了一个批处理文件,并运行它来启动VS和Sql Server Management Studio,它像一个魅力。
如果我误解了这个问题,请原谅我的噪音。
听起来好像当您在本地运行时,您的本地域帐户是运行所有内容的上下文。当运行控制台应用程序时,它仍然在用户上下文中运行,因为您启动了该应用程序。当在IIS中运行时,你是正确的,app-pool帐户正在被使用,而networkservice帐户具有一些相当低的特权。
代替使用高度特权帐户(例如您的帐户),模拟是否可以解决您的问题?任何需要通过VPN完成的工作都可以"包装"在具有适当权限的上下文中。这里是另一篇关于使用模拟的文章,我已经为相关的事情实现了模拟:
如何在。net中进行模拟?
参见Matt Johnson的回答,他在其中创建了一个定制的Impersonation类。在using块中使用它,然后进行网络操作。它使用带有p/invoke的advapi32.dll来执行这种用户帐户巫术。他还提供了一个NuGet包,可以为您节省一些时间:
https://www.nuget.org/packages/SimpleImpersonation