作为在 Windows Azure 上启动 WebRole 的一部分,我想访问正在启动的网站上的文件,我想在 RoleEntryPoint.OnStart() 中执行此操作。例如,这将使我能够在加载 ASP.NET AppDomain 之前影响 ASP.NET 配置。
当使用 Azure SDK 1.3 和 VS2010 在本地运行时,下面的示例代码可以解决问题,但是代码周围有黑客攻击的恶臭,并且在部署到 Azure 时它没有解决问题。
XNamespace srvDefNs = "http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition";
DirectoryInfo di = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);
string roleRoot = di.Parent.Parent.FullName;
XDocument roleModel = XDocument.Load(Path.Combine(roleRoot, "RoleModel.xml"));
var propertyElements = roleModel.Descendants(srvDefNs + "Property");
XElement sitePhysicalPathPropertyElement = propertyElements.Attributes("name").Where(nameAttr => nameAttr.Value == "SitePhysicalPath").Single().Parent;
string pathToWebsite = sitePhysicalPathPropertyElement.Attribute("value").Value;
如何以适用于开发人员和 Azure 的方式从 RoleEntryPoint.OnStart() 获取 WebRole 站点根路径?