Als Teil des Startens einer WebRole auf Windows Azure möchte ich auf Dateien auf der Website zugreifen, die gestartet wird, und ich möchte dies in RoleEntryPoint.OnStart() tun. Dadurch kann ich beispielsweise die ASP.NET-Konfiguration beeinflussen, bevor die ASP.NET AppDomain geladen wird.Wie kann ich den Root-Pfad der WebRole-Site von RoleEntryPoint.OnStart() abrufen?
Wenn Sie lokal mit Azure SDK 1.3 und VS2010 arbeiten, wird der folgende Beispielcode den Zweck erfüllen, aber der Code hat den Gestank des Hacks um ihn herum und es tut nicht den Trick bei der Bereitstellung in 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;
Wie kann ich den WebRole Website Root-Pfad von RoleEntryPoint.OnStart() in einer Art und Weise erhalten, die sowohl Entwickler und auf Azure arbeiten?
Das Ändern der Berechtigung und/oder das Bearbeiten von bereitgestellten Dateien ist nur möglich, wenn Sie diese der WebRole in ServiceDefinition.csdef hinzufügen. –