2009-07-08 16 views

risposta

6

È necessario creare un tipo MIME per tale interno in IIS:

per definire un tipo MIME per un'estensione specifica, attenersi alla seguente procedura:

  1. Aprire il Microsoft Management Console (MMC) , fare clic con il pulsante destro del mouse sul nome del computer locale, quindi fare clic su Proprietà.
  2. Fare clic su Intestazioni HTTP.
  3. Fare clic su Tipi MIME.
  4. Fare clic su Nuovo.
  5. Nella casella Estensione, digitare l'estensione del nome file desiderata (ad esempio, .axed)
  6. Nella casella Tipo MIME, digitare application/octet-stream.
  7. Applicare le nuove impostazioni. Si noti che è necessario riavviare il servizio Pubblicazione sul Web o attendere che il processo di lavoro venga riciclato affinché le modifiche abbiano effetto. In questo esempio, IIS ora serve i file con l'estensione .axed.
+0

No, non è così. Ho la sensazione che il server stia eliminando i parametri di querystring da file .axd e file .asmx come i miei servizi web non funzionano neanche. Qualcuno è a conoscenza di qualcosa che potrebbe impedire questo (non è il verbo mancante dall'estensione in quanto ciò genera un errore diverso) – januszstabik

+0

Quale versione di IIS è in esecuzione? – Alex

+0

Sto pensando che potresti avere un problema con le autorizzazioni? Riesci a vedere qualcos'altro su quel server? .aspx? Nulla? – Alex

2

Abbiamo avuto errore 500 (non è 404, ma chissà) sul nostro server di produzione qualche tempo fa. Nessuna risorsa di script è stata in grado di caricare.

Il problema era nella differenza di tempo tra i nostri server di sviluppo e di produzione. Erano -7 ore. .NET ha generato un'eccezione a causa del tentativo di utilizzare un "tempo nel futuro" di un assembly con risorse di script incorporate.

La riduzione della cartella {website}/bin/ (in realtà gli assembly "in esso) ha risolto il problema giorno dopo giorno.

+0

Grazie per il suggerimento. Mi piacerebbe testarlo. Quale strumento hai usato per modificare i timestamp? – itslittlejohn

+0

Questo era davvero il problema per noi, e stavamo diventando 404. Ho usato il cambio di date dei file di Nirsoft. – itslittlejohn

0

È possibile effettuare una richiesta "non valida" che non riesce e quindi controllare i registri eventi del sistema e dell'applicazione del server?

Ci sono diversi problemi intorno axd che possono causare 404 o 500 (come il problema "tempo nel futuro" menzionato da Alex), ma lasciano un footprint nel registro eventi.

Dai un'occhiata e pubblica tutte le voci del registro che riportano le assd.

3

È possibile controllare la seguente:

  1. Verificare nella console di gestione di IIS che è consentito l'estensione axd (l'estensione gestore HTTP di default).
  2. Controllare anche se la casella di controllo "Verifica se il file esiste" è deselezionata. Questa schermata viene visualizzata dopo aver fatto clic sul pulsante "Modifica" dopo aver selezionato l'estensione axd.
  3. Verificare se il gestore HTTP è registrato correttamente in web.config. Dovrebbe anche essere nella sezione di configurazione giusta in base alla versione di IIS. Per la modalità classica IIS6 e IIS7 dovrebbe essere in <system.web><httpHandlers>. Per la modalità integrata IIS7 dovrebbe essere registrato in <system.webServer><handlers>.
15

se siete su IIS7 assicuratevi di aggiungere il gestore alla sezione <system.webServer><handlers>:

<add name="MyName" path="MyName.axd" verb="*" type="NameSpace.Class, Assembly" /> 
4

Confermare che in Request Filtering si sia * avere .axd come un'estensione ammessi, o * avere Allow unlisted file name extensions spuntato in Modifica richieste Impostazioni filtro

Lo stesso effetto può essere ottenuto con la seguente sezione web.config:

<system.webServer> 
    <security> 
     <requestFiltering> 
      <fileExtensions> 
       <add fileExtension=".axd" allowed="true" /> 
      </fileExtensions> 
     </requestFiltering> 
    </security> 
</system.webServer> 
+0

Volevo fare l'opposto, quindi era perfetto (ovviamente, ho usato 'false' al posto di' true'). – Fenton

7

Nel mio caso, stavo trasferendo il progetto da. NET 2.0 utilizzando la conversione automatica. Il convertitore ha aggiunto la sezione <system.webServer> e tutti i gestori e i moduli presenti nello <system.web>. Tuttavia, per ogni gestore ha aggiunto il seguente attributo: preCondition = "integratedMode, runtimeVersionv2.0" Una volta rimosso l'attributo, i 404 si sono fermati e il gestore ha iniziato a funzionare.

+0

Grazie per avermi salvato una quantità di tempo sconosciuta, ma probabilmente significativa! – bentayloruk

0

ho aggiunto un attributo runAllManagedModulesForAllRequests = "true" in moduli .. nodo del sezione system.webServer, le 404s arrestato e gestore ha iniziato a funzionare.

0

Se questo aiuterà qualcuno, ho avuto lo stesso problema, pochi di noi hanno trascorso 2 giorni. Su 3 server tutto ha funzionato bene e anche sullo sviluppo ma su questo server 404 non stop. La soluzione, ho cambiato da integrato a classico e ha funzionato