Domanda

Il mio sito Nancyfx, impiegando le viste del rasoio CSHTML, ASP.NET e IIS7, funziona bene a livello locale. Funziona tramite il VS12 integrato nel "server di sviluppo ASP.NET" e anche come sito indipendente attraverso la mia copia locale di IIS7. Ho assicurato il mio web.config contiene le sezioni del rasoio corrette.

Se implemendo questo sito su un server remoto (testato sui miei server di staging e live), allora ogni URI restituisce l'errore:

406 - Client browser does not accept the MIME type of the requested page.
.

Ho controllato le intestazioni Accept nella richiesta. Qui sono:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
.

Altri siti di non-Nancy in esecuzione sui server remoti funzionano bene, hanno esattamente le stesse intestazioni di accettazione. Questo sito utilizzato per funzionare bene sui server remoti con le stesse intestazioni di accettazione il più lontano possibile.

Ho anche fatto il seguente test sul mio server di stadiazione.

Ho rinominato il mio HomeView.cshtml in generatori di HomeView.html e ha sostituito tutti i suoi contenuti con hello world (nessun tag HTML, solo il testo). Questo è stato servito senza problemi. Ho quindi rinominato il testo-solo HomeView.htmld Torna a HomeView.cshtml e ha ottenuto nuovamente il 406.

Infine, e in disperazione, ho aggiunto un tipo MIME al server che mappa .cshtml -> text/html ma ovviamente non ha fatto alcuna differenza poiché non sto effettivamente il servizio di file .cshtml.

Perché Nancy è Nancy (o forse IIS7) Restituzione di una risposta 406 Not Acceptable per qualsiasi contenuto derivato dai file .cshtml?

Modifica Ecco la traccia di Nancy. Sembra mostrare che non è possibile trovare il HomeView.cshtml o che il motore di vista del rasoio non venga utilizzato SO * .cshtml file non verrà trovato.

Currently available view engine extensions: sshtml,html,htm
.

Questo porta quindi all'eccezione Nancy Internal Nancy:

Nancy.ViewEngines.ViewNotFoundException
.

Eppure precisamente gli stessi file del sito funzionano localmente e richiamano correttamente il motore di visualizzazione del rasoio e quindi trovare HomeView.cshtml.

Sono ancora cercato.

_nancy Trace

[StaticContentConventionBuilder] The requested resource '/home' does not match convention mapped to '/Content'
[DefaultRouteResolver] Found exact match route
[DefaultRouteInvoker] Processing as negotiation
[DefaultRouteInvoker] Accept header: text/html;q=1, application/xhtml+xml;q=1, application/xml;q=0.9, */*;q=0.8
[DefaultRouteInvoker] Acceptable media ranges: text/html
[DefaultRouteInvoker] Invoking processor: Nancy.Responses.Negotiation.ViewProcessor
[DefaultViewFactory] Rendering view with name HomeView
[DefaultViewResolver] Resolving view for 'HomeView', using view location conventions.
[DefaultViewResolver] Attempting to locate view using convention 'views/Home/HomeView'
[DefaultViewResolver] Attempting to locate view using convention 'Home/HomeView'
[DefaultViewResolver] Attempting to locate view using convention 'views/HomeView'
[DefaultViewResolver] Attempting to locate view using convention 'HomeView'
[DefaultViewResolver] No view could be resolved using the available view location conventions.
[DefaultViewFactory] Unable to find view engine that could render the view.
[DefaultRouteInvoker] Processor threw Nancy.ViewEngines.ViewNotFoundException exception: Unable to locate view 'HomeView'
Currently available view engine extensions: sshtml,html,htm
Locations inspected: ,views/Home/HomeView,,Home/HomeView,views/HomeView,HomeView
Root path: D:\wwwroot\GoodPractice.uMentor\[DefaultRouteInvoker] Invoking processor: Nancy.Responses.Negotiation.ViewProcessor
[DefaultViewFactory] Rendering view with name HomeView
[DefaultViewResolver] Resolving view for 'HomeView', using view location conventions.
[DefaultViewResolver] Attempting to locate view using convention 'views/Home/HomeView'
[DefaultViewResolver] Attempting to locate view using convention 'Home/HomeView'
[DefaultViewResolver] Attempting to locate view using convention 'views/HomeView'
[DefaultViewResolver] Attempting to locate view using convention 'HomeView'
[DefaultViewResolver] No view could be resolved using the available view location conventions.
[DefaultViewFactory] Unable to find view engine that could render the view.
[DefaultRouteInvoker] Processor threw Nancy.ViewEngines.ViewNotFoundException exception: Unable to locate view 'HomeView'
Currently available view engine extensions: sshtml,html,htm
Locations inspected: ,views/Home/HomeView,,Home/HomeView,views/HomeView,HomeView
Root path: D:\wwwroot\GoodPractice.uMentor\[DefaultRouteInvoker] Unable to negotiate response - no processors returned valid response
.

È stato utile?

Soluzione

La risposta è stata semplice.Ho solo bisogno di

    .
  • Disinstallare il pacchetto Nancy.ViewEngines.RAZOR (NUGET)
  • Installa il pacchetto Nancy.ViewEngines.RAZOR (NUGET)
  • Pulizia del progetto
  • Ricompili
  • Redeploy

voilà!Avrei dovuto farlo 16 ore fa credo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top