System.UnauthorizedAccessException with ASP.NET Web Role in Windows Azure
After working in one Windows Azure issue in which the ASP.NET Web
Role was stuck in between "Busy" and "Starting", I decided to write the details
to save some time for someone.
After I logged in to Windows Azure VM and looked for Application
Event logs I found the following two errors:
Error
#1:
Log Name: Application
Source: ASP.NET 2.0.50727.0
Date: 02/02/2011 12:36:20 AM
......
Event code: 4011
Event message: An unhandled access exception has occurred.
Event time: 02/02/2011 12:36:20 AM
Event time (UTC): 02/02/2011 12:36:20 AM
Event ID: d209883d329447298110ba8ec3691534
Event sequence: 4
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1/ROOT-1-129314037651185446
Trust level: Full
Application Virtual Path: /
Application Path: E:\approot\
Machine name: XXXXXXXXXXXXXXXX
Process information:
Process ID: 1868
Process name: WaWebHost.exe
Account name: CIS\xx-xx-xx-xx-xx-xx-xx-
Request information:
Request URL: https://xx.xx.xx.xx:20000/do.\_\_rd\_runtime\_init\_\_
Request path: /do.__rd_runtime_init__
User host address: xx.xx.xx.xx
User:
Is authenticated: False
Authentication Type:
Thread account name: CIS\XXXXX-XXXXX-XXXXX-XXXX
Error #2:
Log Name: Application
Source: Application Error
Date: 02/02/2011 12:30:07 AM
Event ID: 1000
Task Category: (100)
Level: Error
Keywords: Classic
User: N/A
Computer: XXXXXXXXX
Description:
Faulting application WaWebHost.exe, version 6.0.6002.18006, time
stamp 0x4beb1a60, faulting module kernel32.dll, version 6.0.6002.18005, time
stamp 0x49e041d1, exception code 0xe0434f4d, fault offset 0x00000000000176fd,
process id 0x%9, application start time 0x%10.
After little more debugging I found that the ASP.NET Web Role
was keep crashing because the code was trying write into a file name "StreamLog.txt"
in the RoleRoot folder as below:
- Exception type: System.UnauthorizedAccessException
Message: Access to the
path 'E:\\approot\\StreamLog.txt' is denied.
The Web Role based web site is running you don't have write access
to RoleRoot folder and if any user who access the website and the underneath code tries to write in RoleRoot folder the website host process, will generate an exception as described above. If you have a web role or worker role in Windows Azure application and you have a requirement to write content in a file, then the best solution is the create a local storage and create file and write into the files accessing Local Storage as you writable folder.