• Bannato User

    Offro 20? a sistemista IIS7 per installare applicativo web da me realizzato

    Applicazione web su IIS7.5 in errore scrittura file XML

    L'applicativo l'ho già installato correttamente su deversi host, e ha sempre funzionato, ora sono passato ad un server dedicato dove ho riscontrato l'errore che qui spiegherò.

    Uso IIS 7.5 (in inglese)

    L'applicativo è settato per girare con la securuty policy FULL TRUST

    La mia applicazione web mi va in errore quando tenta di scrivere un file XML nella directory App_Data, chiedo istruzioni su come configurare correttamente IIS 7.5 per far girare il mio applicativo.

    L'errore che mi appare a video è il seguente:
    **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\App_Data\forum\1\9143\topic.xml' 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 and IIS 7, and the configured application pool identity on IIS 7.5) 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:

    The source code that generated this unhandled exception can only be shown when compiled in debug mode. To enable this, please follow one of the below steps, then request the URL:

    1. Add a "Debug=true" directive at the top of the file that generated the error. Example:

    <%@ Page Language="C#" Debug="true" %>

    or:

    1. Add the following section to the configuration file of your application:

    <configuration>
    <system.web>
    <compilation debug="true"/>
    </system.web>
    </configuration>

    Note that this second technique will cause all files within a given application to be compiled in debug mode. The first technique will cause only that particular file to be compiled in debug mode.

    Important: Running applications in debug mode does incur a memory/performance overhead. You should make sure that an application has debugging disabled before deploying into production scenario.
    Stack Trace:

    [UnauthorizedAccessException: Access to the path 'C:\inetpub\wwwroot\App_Data\forum\1\9143\topic.xml' is denied.] WebApplication.FileManager.Serialize(Object Obj, String NameFile) +872 WebApplication.Topic.SaveInfo() +129 WebApplication.Topic.IncReaded() +27 WebApplication.ForumManager.ShowTopic(SubSite Setting, Int32 ForumID, Int32 TopicID, Int32 CurrentPage, Boolean ShowCensored, Boolean ShowAvatars, Boolean OperationsColumn, Page Page, ActionType Action, String Jump, Control Buttons, Control LinksCorrelated, Boolean AddTitle, Boolean SetMetaRevisitAfter) +1058 WebApplication.Migrated_forum.SetVisualization() +3451 System.Web.UI.Control.PreRenderRecursiveInternal() +113 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4185

    Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1

    **Server Error in '/' Application. **

    Access to the path 'C:\inetpub\wwwroot\App_Data\forum\1\9143\topic.xml' is denied.


  • User

    Sembrerebbe un problema di permessi sulla cartella C:\inetpub\wwwroot, che nulla ha a che fare con le policy di sicurezza impostate sull'applicazione.

    Hai provato ad accertarti che l'utente IIS abbia i permessi su quella cartella? In lettura penso che li troverai sicuramente abilitati, ma da quello che mi sembra di aver capito dallo stack trace, stai cercando di fare una scrittura (SaveInfo...) e di conseguenza devi concedere all'utente di IIS anche i permessi in scrittura.

    L'utente IIS dovrebbe essere IUSR (dovrebbe perchè se non ricordo male è cambiato con il rilascio di una versione di IIS). In ogni caso, puoi fare un veloce test "d'esclusione" provando a concedere TEMPORANEAMENTE i permessi completi all'utente Everyone e provare a far girare l'applicazione.

    Se gira senza eccezioni, allora hai trovato la causa del tuo problema.

    Ricordati in ogni caso di eliminare poi qualsiasi tipo di autorizzazione sull'utente Everyone.


  • Bannato User

    Il problema l'ho risolto impostando l'Administrator come utente che impersonalizza il pool dell'applicazione.

    La cosa strana, è che sempre sotto App_Data scrivevo dei file di log con estenzione .txt e non ho riscontrato restrizioni nello scrivere in questi file, mentre invece l'impedimento in scrittura era solo nello scrivere file con estenzione .xml


  • User

    Meglio così allora 🙂

    Fai attenzione però, far girare le applicazioni come Administrator non è il massimo ... Da quello che dici credo che a maggior ragione si tratti di un problema di permessi (essendo Administrator sicuramente autorizzato a scrivere in quella cartella)