2013-04-30 11 views
6

all'interno della directory radice Ho la seguente strutturaweb.config errore allowDefinition = MachineToApplication

.. 
.. 
.. 
web.config 
Report Folder 
- Login.aspx 
- Web.config 
    | 
    |-> ViewReport 
     |  
     |-> Report.aspx 

Nel mio file web.config nella cartella Rapporto Ho il seguente:

<?xml version="1.0"?> 
    <configuration> 
     <system.web> 
      <authentication mode="Forms"> 
       <forms loginUrl="Login.aspx" defaultUrl="ViewReport/Report.aspx"> 
        <credentials passwordFormat="Clear"> 
         <user name="Johl" password="pass888"/> 
        </credentials> 
       </forms> 
      </authentication> 
     </system.web> 

     <location path="ViewReport/Report.aspx"> 
      <system.web> 
       <authorization> 
        <allow users="Johl"/> 
        <deny users="*"/> 
       </authorization> 
      </system.web> 
     </location> 
    </configuration> 

Quando ho avvio del debug Viene visualizzato il seguente messaggio:

È un errore utilizzare una sezione registrata come allowDefinition = 'MachineToApplication' oltre il livello di applicazione. Questo errore può essere causato da una directory virtuale non configurata come un'applicazione in IIS.

NOTA che nel mio web.config radice ho qualcosa di simile alla seguente:

Nella mia radice, ho già i seguenti:

  <system.web>   
      <authentication mode="Forms"> 
       <forms loginUrl="Str/StrUserLogin.aspx" timeout="2880" slidingExpiration="true" />   
       </authentication> 
      <authorization> 
       <allow users="*" /> 
      </authorization>  
     </system.web> 
+0

Hai creato una directory virtuale nella radice del sito? – IrishChieftain

+0

Lo faccio anche se sto lavorando su localhost? –

+0

Sì, questa è probabilmente la causa di questo errore. – IrishChieftain

risposta

8

Creare una directory virtuale nella radice del sito. Questo può essere fatto tramite le proprietà del progetto in VS sotto la scheda Web.

È anche possibile che le cose siano definite nella sottodirectory che dovrebbe essere nel file di configurazione di root. Vedere domanda simile qui:

Error to use a section registered as allowDefinition='MachineToApplication' beyond application level

+0

Grazie. Ho un web.config nella root e nella sottodirectory. In base a ciò che hai menzionato di seguito, perché ricevo questo messaggio di errore allora? –

+0

Hai creato la directory virtuale? Ho aggiornato la mia risposta. – IrishChieftain

+0

http://msdn.microsoft.com/en-us/library/aa719558%28v=vs.71%29.aspx – IrishChieftain

2

Il contenuto del web.config nella sottodirectory dovrebbe essere placede nella directory principale. La configurazione nella sottodirectory sta facendo sì che IIS tratti la sottodirectory come root dell'applicazione, ma non è la root dell'applicazione. Questo è il motivo per cui ottieni l'errore allowDefinition = 'MachineToApplication'.

+0

Grazie typetrice. Ho aggiornato ciò che ho nella root web.config. Non sono sicuro di come combinare ciò che ho nella sottodirectory a ciò che è nella root web.config. Si prega di aiutare –

-3

Questo errore si verifica se il file web.config e il vostro tutti i file aspx non sono nella stessa cartella. quindi per favore metti tutti i file nella stessa cartella.

Grazie.

0

Ho aperto il sito Web da IIS invece che da file system e ha funzionato.

4

La conversione della cartella/progetto in un'applicazione in IIS può risolvere questo errore.

+1

Questo mi ha aiutato. Grazie ! :) – Coder

Problemi correlati