Reputation: 61
I have a Cloud Service running on Azure and i'm trying to add Umbraco as a VirtualApplication to the WebRole:
ServiceDefinition.csdef:
...
<Site name="Web">
<VirtualApplication name="cms" physicalDirectory="../../../umbracocms" />
...
It runs perfectly on my local machine on the emulator, however when i deploy the package to the Azure Cloud Service i cant access the Umbraco page, it returns the following error:
Access to the path 'E:\sitesroot\1\config\applications.config' is denied.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.UnauthorizedAccessException: Access to the path 'E:\sitesroot\1\config\applications.config' is denied.
Stack Trace:
[UnauthorizedAccessException: Access to the path 'E:\sitesroot\1\config\applications.config' is denied.]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +216
System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) +1430
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy) +205
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync) +112
System.Xml.XmlWriterSettings.CreateWriter(String outputFileName) +7430688
System.Xml.Linq.XDocument.Save(String fileName, SaveOptions options) +189
Umbraco.Core.Services.SectionService.LoadXml(Action`1 callback, Boolean saveAfterCallback) +253
Umbraco.Core.EnumerableExtensions.ForEach(IEnumerable`1 items, Action`1 action) +148
Umbraco.Core.CoreBootManager.Complete(Action`1 afterComplete) +116
Umbraco.Web.WebBootManager.Complete(Action`1 afterComplete) +337
[HttpException (0x80004005): Access to the path 'E:\sitesroot\1\config\applications.config' is denied.]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +12582201
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +175
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +304
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +404
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +475
[HttpException (0x80004005): Access to the path 'E:\sitesroot\1\config\applications.config' is denied.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +12599232
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +159
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +12438981
I have already tried to add a startup task to no avail:
<Startup priority="1">
<Task commandLine="startup.bat" executionContext="elevated" taskType="simple" />
</Startup>
startup.bat:
echo "starting startup task" >> log.txt
%windir%\system32\Icacls.exe ..\* /T /grant "Network Service":(F) > log.txt
And also to add permissions on the OnStart event of the web role, as instructed here URL. It also didn't work.
When i remote desktop directly into the instance, the folder E:\sitesroot\ doesn't even exist.
Upvotes: 5
Views: 973
Reputation: 61
For those who would like to know. I have found the problem. The startup.bat script was not running successfully. I was able to find out by changing it to the following:
startup.bat
%windir%\system32\Icacls.exe ..\..\* /T /grant "Network Service":(F) > c:\\logStart.txt 2>&1
exit /b 0
And the issue was related to the encoding of the file. The file only ran successfully after using notepad++ and changing the encoding to "UTF-8 without BOM"
Upvotes: 1