Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Umbraco 7.0.2 on Azure Cloud Service - Access to the path 'E:\sitesroot\1\config\applications.config' is denied

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.

like image 896
CarlosOliveira Avatar asked Nov 10 '22 14:11

CarlosOliveira


1 Answers

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"

like image 75
CarlosOliveira Avatar answered Nov 14 '22 22:11

CarlosOliveira