2011-12-12 16 views
11

Impossibile caricare i file di script sul mio sito Web. Tutto il resto funziona bene. Non ho comunque provato ScriptResource.axd.WebResource.axd non trovato

Ho verificato la presenza di questo problema su entrambi i cassini e IIS7.

Ho verificato il mio 64 bit 4.0 web.config contiene il mapping per WebResource.axd.

L'ora del mio sistema è corretta (ho sentito che potrebbero esserci problemi).

Ho verificato che funziona in altri progetti, quindi il colpevole deve essere la mia applicazione web.

La mia applicazione Web è un'applicazione web 4.0 MVC3.

My web.config può essere trovato here.

Questo errore mi sta uccidendo! Qualsiasi aiuto sarebbe apprezzato!

Resource not found

risposta

5

Il file web.config è incredibile (non è un complimento): in .NET Framework 4.0, dovrebbe essere molto più breve/più leggero.
Penso che il gestore è dichiarato nella sezione sbagliata:

<system.webServer> 
    <handlers> 
     <add name="WebResource" path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" /> 
    </handlers> 
</system.webServer> 

Normalmente, il gestore WebResource.axd viene dichiarato nella sezione "system.web":

<system.web> 
    <httpHandlers> 
     <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True" /> 
    </httpHandlers> 
</system.web> 
+0

li ho avuto in entrambi i posti in una sola volta, senza alcun risultato. Non dovrei nemmeno averne bisogno, visto come sono già nel mio computer.config (web.config). –

+2

Hai ragione: questa affermazione normalmente non è necessaria. Dal momento che stai usando MVC, hai verificato che un routing non sia in conflitto con il percorso WebResource.axd? Non uso MVC, ma so che il routing a volte può essere molto complicato e portare a comportamenti imprevisti. – CedX

+0

Ha la voce ignora .axd. –

4

ho risolto un problema simile aggiungendo le autorizzazioni di lettura per Everyone alla cartella in cui si trovava l'assembly che contiene la risorsa incorporata. Chiaramente Ognuno è eccessivo, ma questo potrebbe aiutare gli altri a ricercare problemi simili.

Nel nostro caso sono state caricate alcune risorse (quindi so che AssemblyResourceLoader funzionava) e ha funzionato su una macchina ma non su un'altra.

This answer per un'altra domanda mi ha aiutato a determinare quali assiemi non funzionavano.

3

Ho risolto questo problema in una macchina di produzione in esecuzione di nuovo aspnet_regiis:

%WINDIR%\Microsoft .NET\Framework\4.xxxx\aspnet_regiis -i 

Probabilmente l'installazione standard del quadro 4 è andato storto.

3

Bit tardi, ma potrebbe aiutare qualcuno in futuro ...

ho scoperto che questo può accadere se la DLL dell'applicazione web che si sono espressi sono più recenti rispetto al tempo data corrente. Ad esempio, si inserisce la propria applicazione Web sul server di produzione in cui l'ora del server è precedente rispetto alla macchina di sviluppo.

Ottenere l'ora del server in sincronia con la macchina dev ha fatto il trucco per me ...

0

ho avuto questo problema axd con Umbraco su un server di produzione, si mi faceva impazzire fino a quando ho scoperto che il server aveva una sicurezza diversa e sotto Request Filtering, le estensioni .axd e.asmx non era elencato nei nomi di file consentiti per impostazione predefinita e la società di hosting aveva l'impostazione Consenti estensioni nome file non in elenco disattivate, il che era diverso dal mio computer di sviluppo.

4

Assolutamente soluzione è: http://www.4guysfromrolla.com/articles/080906-1.aspx quando si controlla il codice del framework .net: https://github.com/Microsoft/referencesource/blob/master/System.Web/Handlers/AssemblyResourceLoader.cs si può vedere il trucco: alla linea 606

WebResourceAttribute wra = FindWebResourceAttribute(assembly, resourceName); 

se l'assemblea non ha WebResourceAttribute getta errore 404. Si può vedere in questa linea

if (resourceStream == null) { 
      if (resourceIdentifierPresent) { 
       LogWebResourceFailure(decryptedData, exception); 
      } 
      throw new HttpException(404, SR.GetString(SR.AssemblyResourceLoader_InvalidRequest)); 
     } 

quindi aggiungere il WebResourceAttribute ai vostri AssemblyInfo.cs file in questo modo:

[assembly: WebResource("FullNameSpace.SampleResourceFile.js", "text/javascript")]