加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 无法通过VPN以编程方式访问网络路径

发布时间:2020-12-15 22:07:07 所属栏目:百科 来源:网络整理
导读:我正在尝试从ASP.NET中的Web服务使用网络路径(创建目录,写入和读取文件). 我的办公室里的一切工作正常,网络路径位于我的笔记本电脑的同一个局域网中,但是当我尝试通过VPN连接到网络路径时,目录的创建失败并显示“访问路径被拒绝”错误. 奇怪的是,从Windows资
我正在尝试从ASP.NET中的Web服务使用网络路径(创建目录,写入和读取文件).

我的办公室里的一切工作正常,网络路径位于我的笔记本电脑的同一个局域网中,但是当我尝试通过VPN连接到网络路径时,目录的创建失败并显示“访问路径被拒绝”错误.

奇怪的是,从Windows资源管理器中,我可以完美地访问这样的路径,根据我的VPN凭据,我存储在Windows Credentials Wallet中.

我还尝试将我的IIS应用程序池标识设置为“网络服务”,但没有运气.

你能帮我吗?

非常感谢你

编辑:

当我尝试执行类似的语句时

Directory.CreateDirectory(@"mynetworkpath");

从我的Visual Studio 2010中的一个简单的控制台应用程序项目,它完美地工作,并创建目录.

问题是当我在我的Web服务的业务逻辑中发出这样的声明时,该声明在本地IIS下运行(并且我通过VS2010中的“Attach Process …”调试工具连接到该声明)

解决方法

听起来像在本地运行时,您的本地域帐户是运行所有内容的上下文.运行控制台应用程序时,自启动应用程序以来,它仍在用户上下文中运行.在IIS中运行时,您正确使用了应用程序池帐户,并且网络服务帐户具有一些非常低的权限.

而不是使用高权限帐户(例如您的帐户),模拟会解决您的问题吗?任何需要通过VPN完成的工作都可以在上下文中“包装”适当的权限.这是另一篇关于使用模拟的SO文章,我已经为相关事项实现了这个:

How do you do Impersonation in .NET?

请参阅Matt Johnson的答案,他创建了一个自定义的Impersonation类.在使用块中使用它,然后做你的网络东西.它使用advapi32.dll和p / invoke来做这种用户帐户voodoo.他还整理了一个NuGet包,可以为您节省一些时间:

https://www.nuget.org/packages/SimpleImpersonation

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读