我需要帮助创建指向 Windows Azure(生产环境)中本地存储的虚拟目录。我可以手动设置一个虚拟目录,但每次重新启动 Azure 时都会删除它。线索是当我在 Azure 上上传我的项目包时,通过配置文件创建虚拟目录。问题是如何创建这样的目录,使其指向本地存储。
提前谢谢任何建议。
此致,
达雷克
我建议您通过在 WebRole 的 OnStart 方法中与 IIS 交互来创建虚拟目录:
public class WebRole : RoleEntryPoint
{
public override bool OnStart()
{
// Connect to the IIS site.
using (var manager = new Microsoft.Web.Administration.ServerManager())
{
var localResourcePath = RoleEnvironment.GetLocalResource("MyResource").RootPath;
// Add to the root application.
var rootSite = manager.Sites[RoleEnvironment.CurrentRoleInstance.Id + "_Web"];
var rootApplication = rootSite.Applications["/"];
rootApplication.VirtualDirectories.Add("/myVdir", localResourcePath);
// Save
manager.CommitChanges();
}
...
}
}
如果我是对的,您需要将执行上下文设置为提升才能使其正常工作。您可以在 ServiceDefintion.csdef 中执行此操作:
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="MyProject" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-05.1.7">
<WebRole name="MyRole" vmsize="Small" enableNativeCodeExecution="true">
<Runtime executionContext="elevated" />
...
</WebRole>
</ServiceDefinition>
注意:您需要参考Microsoft.Web.Administration.dll (C:\Windows\System32\inetsrv)