2012-11-06 26 views
11

Sto tentando di ospitare un'applicazione Web ASP.NET MVC4 con IIS 7.5. Quando esegui il debug dell'applicazione, tutto funziona correttamente (suppongo che ciò sia dovuto all'autenticazione di Windows). Tuttavia, quando pubblico l'applicazione e selezionare io ottenere un 405 Metodo errore non ammessi:jQuery POST, Errore 405 Metodo non consentito

POST http://localhost/ 405 (Method Not Allowed) 
send 
i.extend.ajax 
i.(anonymous function) 
(anonymous function) 

Da quello che ho letto questo o è un problema con i mapping di gestore in IIS o qualche configurazione è necessario nel web.config. Ad ogni modo, non ho trovato la soluzione corretta. Qualcuno potrebbe dirmi cosa dovrebbe includere il mio web.config in tutti i POSTI? E/o come impostare la corretta mappatura del gestore in IIS, dato che sono nuovo nello sviluppo web e trovo il numero di opzioni un po 'schiacciante.

Il pezzo di javascript che genera l'errore è il seguente:

$.post("/", { latitude: locLat, longitude: locLon, username: $('#onlineUsers').attr('itemid') }); 
+0

se si esaminano gli errori fire bug o chrome dev, l'URL è corretto a cui viene effettuata la richiesta? – Rafay

+0

La richiesta è nel metodo Index del controller Home. Ho provato POST con "/" e "Home/Index" come URL ed entrambi danno lo stesso errore, ma credo che siano corretti. – Matt

risposta

18

A 405 viene generato da IIS quando un verbo HTTP (. GET, PUT, POST, DELETE, HEAD, etc) è richiesto e non è supportato/disabilitato dal gestore designato.

Avrai bisogno di aprire il responsabile di IIS -> Sito Web predefinito -> Mapping gestori (o Mapping gestori specifici per il vostro web-application)

enter image description here

Qui avrete bisogno di gioca con i mapping del gestore in quanto uno di questi non consente i verbi "POST".

Poiché non si sta postando alcuna pagina specifica (.aspx, .ashx, ecc.), Sarà difficile identificare il gestore esatto che causa i problemi.

gestori di interesse possono essere:

  • ExtensionlessUrlHandler-ISAPI-4.0_32bit/64bit
  • StaticFile

Una volta identificato il gestore tua richiesta sta per essere instradata a, fare doppio clic per apri il dialogo.

enter image description here

Da lì cliccare su "Restrizioni richieste", quindi "verbi"

Assicurarsi che il verbo appropriato è presente nell'area di testo.

enter image description here

Come ho detto prima, non sono sicuro quale gestore sta gestendo la richiesta in quanto non stai postando una determinata pagina (si può avere URL ri-scrittura in atto che sta instradando la vostra richiesta in modo appropriato).


Se quanto sopra non funziona, potrebbe essere necessario controllare se WebDAV Publishing è installato e rimuoverlo (riavvio necessario).

WebDAV

+3

Il gestore di file statici era il problema. Grazie per l'aiuto, ottima risposta! – Matt

+0

ma dopo aver implementato questo funziona per me, ma asp: pulsante di collegamento smettere di funzionare. Sai perché vengono questi problemi? – rahularyansharma

+0

Se utilizzo solo GET, il jQuery ajax di POST funziona ma asp: il pulsante di collegamento smette di funzionare, e se utilizzo tutto come mostrato nell'immagine, jquer.post genera un errore 405. – rahularyansharma

0

Forse si dovrebbe modificare il formato post'URl in questo modo:

$.post('@Url.Content("~/Attach/UpdateAttach")' 
0

alcuni utenti stanno avendo qui di hosting condiviso e non server dedicati, in modo che potrebbe non essere in grado di ottenere l'accesso ai il pannello di controllo di IIS ..

questo è il mio caso e qui è quello che ho trovato ..

ho la mia applicazione web su th e la directory root creata tramite il pannello di controllo Godaddy .. e la richiesta POST è confermata ..

quindi ho usato FileZilla per creare una cartella di test per il mio jQuery .. (nota ho usato FileZilla, quindi l'applicazione web e quindi il IIS di GoDaddy non è a conoscenza che volevo questa cartella per essere parte della mia applicazione ci)

poi ogni volta che prova questo jQuery su questa cartella test .. ottengo questo errore [405 metodo non consentito] ..

la soluzione era estremamente semplice:

Ho spostato la mia pagina di test da quella cartella di test crea gestito da FileZilla e localizzato in una cartella creata tramite il pannello di controllo Godaddy (in questo caso IIS si accorgerà che questa pagina è parte della mia applicazione web :))

Spero che questo aiuti quelli in hosting condiviso

Problemi correlati