ThinkGeo.com    |     Documentation    |     Premium Support

Web.config Security Error

I am trying to configure a web application and have set it up to use forms authentication.  I have also added some controls and am now trying to add the map to my application.  When I try to load the page with the web map on it I get the following exception.  Anybody have any idea why I am getting this?  It is like the map is trying to modify the web.config file or something.  Machine is Vista 64-bit with IIS7


Thanks.


Curtis





         body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} 
         p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
         b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
         H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
         H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
         pre {font-family:"Lucida Console";font-size: .9em}
         .marker {font-weight: bold; color: black;text-decoration: none;}
         .version {color: gray;}
         .error {margin-bottom: 10px;}
         .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
        

Server Error in '/' Application. 


Access to the path 'C:\inetpub\wwwroot\web.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  'C:\inetpub\wwwroot\web.config' is denied. 



ASP.NET is not authorized to  access the requested resource. Consider granting access rights to the resource  to the ASP.NET request identity. ASP.NET has a base process identity (typically  {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the  application is not impersonating. If the application is impersonating via  <identity impersonate="true"/>, the identity will be the anonymous user  (typically IUSR_MACHINENAME) or the authenticated request user. 



To grant  ASP.NET access to a file, right-click the file in Explorer, choose "Properties"  and select the Security tab. Click "Add" to add the appropriate user or group.  Highlight the ASP.NET account, and check the boxes for the desired  access.



Source Error: 




    
        
            An unhandled exception was generated during the execution of the  current web request. Information regarding the origin and location of the  exception can be identified using the exception stack trace below.
        
    



Stack Trace: 




    
        
            
            
[UnauthorizedAccessException: Access to the path 'C:\inetpub\wwwroot\web.config' is denied.]
   System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +10547571
   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) +2580
   System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy) +138
   System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) +89
   System.Xml.XmlDOMTextWriter..ctor(String filename, Encoding encoding) +63
   System.Xml.XmlDocument.Save(String filename) +116
   ThinkGeo.MapSuite.WebEdition.Map.x1811944f4031e215() +146
   ThinkGeo.MapSuite.WebEdition.Map.OnLoad(EventArgs e) +59
   System.Web.UI.Control.LoadRecursive() +66
   System.Web.UI.Control.LoadRecursive() +191
   System.Web.UI.Control.LoadRecursive() +191
   System.Web.UI.Control.LoadRecursive() +191
   System.Web.UI.Control.LoadRecursive() +191
   System.Web.UI.Control.LoadRecursive() +191
   System.Web.UI.Control.LoadRecursive() +191
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428

            
        
    



Hi Curtis, 



Actually, we will register the HttpHandler for our client library for you in the web.config automatically if you haven't done this before. As I tested if it has been registered, it works fine. So please check the web.config if the following node exists in the httpHandlers. Please add it manually to fix this issue. 



<add type="ThinkGeo.MapSuite.WebEdition.GeoResourceFactory" verb="*" path="*_GeoResource.*"></add>
<add type="ThinkGeo.MapSuite.WebEdition.GeoResourceFactory" verb="*" path="*_GeoResource.axd"></add>
 

Thanks for reporting and let me know if this issue still exists. 



Thanks, 

Howard 



Howard,


Thanks, that fixed the first issue but now I am getting this error.  Obviously it is trying to create the directory and populate the content.  Is there someplace I can get the content to be placed into this directory?


Thanks.


Curtis





         body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} 
         p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
         b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
         H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
         H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
         pre {font-family:"Lucida Console";font-size: .9em}
         .marker {font-weight: bold; color: black;text-decoration: none;}
         .version {color: gray;}
         .error {margin-bottom: 10px;}
         .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
        

Server Error in '/' Application. 


Access to the path 'C:\inetpub\wwwroot\theme\default\img\' 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  'C:\inetpub\wwwroot\theme\default\img\' is denied. 



ASP.NET is not  authorized to access the requested resource. Consider granting access rights to  the resource to the ASP.NET request identity. ASP.NET has a base process  identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that  is used if the application is not impersonating. If the application is  impersonating via <identity impersonate="true"/>, the identity will be the  anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.  



To grant ASP.NET access to a file, right-click the file in Explorer,  choose "Properties" and select the Security tab. Click "Add" to add the  appropriate user or group. Highlight the ASP.NET account, and check the boxes  for the desired access.



Source Error: 




    
        
            An unhandled exception was generated during the execution of the  current web request. Information regarding the origin and location of the  exception can be identified using the exception stack trace below.
        
    



Stack Trace: 




    
        
            
            
[UnauthorizedAccessException: Access to the path 'C:\inetpub\wwwroot\theme\default\img\' is denied.]
   System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +10547571
   System.IO.Directory.InternalCreateDirectory(String fullPath, String path, DirectorySecurity dirSecurity) +1512
   System.IO.Directory.CreateDirectory(String path, DirectorySecurity directorySecurity) +353
   ThinkGeo.MapSuite.WebEdition.x19091ebae932c0ae.xdb9662fe855718e7(Page x82ecfcc1fb6c0872, Type x7a183634dbcf517a) +1059
   ThinkGeo.MapSuite.WebEdition.Map.OnLoad(EventArgs e) +93
   System.Web.UI.Control.LoadRecursive() +66
   System.Web.UI.Control.LoadRecursive() +191
   System.Web.UI.Control.LoadRecursive() +191
   System.Web.UI.Control.LoadRecursive() +191
   System.Web.UI.Control.LoadRecursive() +191
   System.Web.UI.Control.LoadRecursive() +191
   System.Web.UI.Control.LoadRecursive() +191
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428

            
        
    





Version Information: Microsoft .NET Framework Version:2.0.50727.4062;  ASP.NET Version:2.0.50727.3601 



Nevermind, I created another website without the security and then was able to copy the extracted structure.


Thanks.


Curtis



OK, any more questions please let us know. 
  
 Thanks, 
  
 Sun 


Hello,


we have been trying to incorporate ThinkGeo Web into an MVC applicaiton on IIS 7 Integrated pipeline and we found a number of things that are quite disturbing (and are hinted by the post above).


First of all, ThinkGeo Web tries to modify web.config file in run time which is a security risk, especially, considering the fact that our production systems are running on a load balanced environment where each IIS server does not have local source code but rather points to a common file server (same applies to web.config file).  In addition, ThinkGeo Web specifically looks for httpHandler section to be present (it is not a requirement for IIS7 web.configs) and if it can not find it, it crashes.  Once we added that section into the web.config, ThinkGeo tried to modify the section to inject its handlers: given that the code on the servers is read only to the web thread - this operation fails as well.


The second problem is the fact that ThinkGeo Web tries to copy its resources/images as well as modify .css files in run time as well.  Again, this presents a security risk and would not be allowed on production servers: unfortunatelly, we can not change our production servers to have source code directories to be writable due to the issues outlined above (mainly the fact that they are load balanced, so there is a possibility of thread /file lock conflicts if its allowed).   In addition, with IIS7, even if the directory is writable, ThinkGeo process crashes on initialize as its trying to grab its resources and write to img\ directory.  We found a workaround: make sure all the images are present including log.txt that ThinkGeo is specifically checks for.  In general, from what we have seen, the initialization code of ThinkGeo Web contains relatively risky code and it really needs to be heavily tested on IIS 7 Integrated Pipeline as well as MVC in the scenarios similar to outlined above (we also are running into problem with routing of .js files that ThinkGeo Web injects into our web pages - this is likely specific to MVC).


I belive I have mentioned the topic of IIS 7 integrated pipeline and MVC before (3-4 months back), but are there are any serious efforts planned to look into security, IIS 7 Integrated Pipeline and MVC topics in the near future?  This is the technolgoy stack that most of our new applications are being developed on and I think its pretty important for ThinkGeo to start thinking about the implications of not addressing those functionalities in order to stay competitve.


Thanks,


Val



 


Val,
 
Two properties of map are added, one is “IsWebConfigRegistable”, the other one is “IsAllowResoucesCopied”. Below is the instructions:
 
IsWebConfigRegistable:
 
It’s a value that indicates whether the application allows map to register the Web.config on the fly in runtime. The default value is "True", otherwise, you need to copy the code below to the web.config manually.
         <system.web></system.web>
          


<system.web>
          <httpHandlers>
            ...
            <add path="*_GeoResource.axd" verb="*" type="ThinkGeo.MapSuite.WebEdition.GeoResourceFactory" />
          
         
         <system.webServer>
          <handlers>
            ...
            <add name="GeoResource" path="*_GeoResource.axd" verb="*" type="ThinkGeo.MapSuite.WebEdition.GeoResourceFactory" />
          
        


        
 
IsAllowResoucesCopied:
 
It’s a value that indicates whether the application allows map to copy its resource images under "~/theme/default/img/". The default value is "True", otherwise, you need to copy images to the directory.
 
 
 
Please get the updated WebEdition DLL package with version 3.1.396 or later from crm.thinkgeo.com. And we will do more test with IIS7 to make sure it works normally.
 
Thanks,
 
Johnny

I’m having a similar proble to: 
 [UnauthorizedAccessException: Access to the path ‘C:\inetpub\wwwroot\theme\default\img’ is denied.] 
 Just the root directory has been changed… 
 My config.sys has: 
 <system.webServer> 
     <handlers> 
     <add type=“ThinkGeo.MapSuite.WebEdition.GeoResourceFactory” verb="*"  path="*_GeoResource.axd" name=“GeoResource”  /> 
  </handlers> 
   </system.webServer> 
  
 I’m running Windows 7  
 It’s been a while since I ran this application - so several Windows 7 patches could have been installed… 
 Thanks in Advance! 
 Cyndi 
  
 <system.web> 
     <httpHandlers> 
       <add path="*_GeoResource.axd" verb="*" type=“ThinkGeo.MapSuite.WebEdition.GeoResourceFactory” /> 
     </httpHandlers> 
 </system.web> 
  
 and I’m running WebEdition File Version 4.5.0.0 


Cyndi, 
  
 Obviously, the problem is from the Windows 7 permission issue,  please add the folder permission to the administrator account so that the wwwroot can be accessed properly,  
  
 Thanks, 
  
 Scott,