繁体   English   中英

将Azure VM中的映射驱动器持久保存到Azure文件存储时出现问题

[英]Problems persisting mapped drive in Azure VM to Azure file storage

我有一个创建共享的Azure文件存储帐户。 我有2个Azure VM,一个正在运行SQL Server,一个正在运行IIS和Windows服务(用c#.net 4.5.1编写)。 我需要它们都可以访问共享以共享文件。 我已经阅读了几篇文章,并尝试使用cmdkey保留凭据并通过网络使用映射驱动器。 我遇到两个问题。

在SQL VM上,一切似乎正常。 它正在将文件写入共享,而我在那里没有很多麻烦。 在另一台VM上,我遇到了问题。 首先,持久位似乎并没有真正起作用。 我运行它,验证它是否已存储(在执行cmdkey / list时以及在凭据管理器中显示),并且可以使用网络使用来映射驱动器。 似乎起作用。 我可以在资源管理器中浏览到该驱动器,但是如果注销计算机,则在我重新登录时它不会重新连接。从虚拟机注销后,连接似乎会丢失,直到再次运行net use。 其次,即使我可以浏览到该文件夹​​,Windows服务也根本找不到它。 我已验证该路径是否正确。 我将其复制并粘贴到“资源管理器”窗口中,它直接进入该文件夹。 我尝试将服务作为本地系统运行,因为我使用...登录虚拟机的帐户...全部给出未找到路径错误。 据我所能找到的,我唯一需要的两件事是cmdkey命令和net use命令,驱动器应该可用并自动重新连接。 我想念什么吗?

编辑:我忘了提一下,如果我在同一台机器上以控制台应用程序运行该服务,它会找到该文件夹​​并正常运行。 作为服务运行,但不是。 它被配置为可以使用http://www.dontpaniclabs.com/blog/post/2011/10/20/running-a-service-as-an-application/中的方法运行

我本人也有这个完全相同的问题,我在Stack Exchange上发布了,但是没有答案。

问题在于,映射的网络驱动器或网络共享UNC仅对于创建它的用户是持久的,而cmdkey存储的凭据也仅对于创建它的用户是持久的。

这就是为什么当您登录到VM并访问保留凭据时,您能够导航到共享或将其用作映射的网络驱动器的原因。 但是,作为Windows服务安装的应用程序将无法使用共享,因为它没有能够执行此操作的凭据。

解决此问题的方法是,我在VM上创建了一个本地用户,该用户的用户名设置为访问StorageAccount FileShare所需的用户名,并将密码设置为StorageAccount访问密钥。 然后,我将Windows服务设置为以该用户身份而不是本地系统帐户身份运行。

我想这对于您的IIS实例也是同样的问题。 由于您的IIS默认情况下将使用具有默认“ ApplicationPoolIdentity”用户的ApplicationPool。 您可以将该用户更改为也可以以新创建的本地用户身份运行。

编辑: 仅当您的StorageAccount名称的长度小于20个字符时,上述Windows用户解决方案才有效,因为这是Windows用户名的限制

有另一种解决方法。 您可以更改代码,以便在调用UNC或映射的网络驱动器时,它可以传递进行身份验证所需的凭据。

我刚刚在下面的链接中尝试过该示例,并且效果很好。

您如何在.NET中进行模拟?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM