406 ответ, когда сайт NancyFX пытается сервер бритвы просмотров
Мой сайт NancyFX, использующий cshtml виды бритвы, asp.net и IIS7, прекрасно работает локально. Он работает через VS12, встроенный в ASP.NET Development Server, а также как отдельный сайт через мою локальную копию IIS7. Я удостоверился, что мой web.config содержит правильные разделы бритвы.
Если я разверну этот сайт на удаленном сервере (проверено на моих промежуточных и живых серверах), то каждый URI возвращает ошибку:
406 - Client browser does not accept the MIME type of the requested page.
Я проверил Accept
Заголовки в запросе. Вот они:
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
Другие сайты не-nancy, работающие на удаленных серверах, работают нормально, они имеют точно такие же заголовки принятия. Насколько я могу судить, этот сайт нормально работал на удаленных серверах с теми же заголовками Accept.
Я также провел следующий тест на моем промежуточном сервере.
Я переименовал мой HomeView.cshtml
в HomeView.html
и заменил все его содержимое на hello world
(без HTML-тегов, только текст). Это было подано без проблем. Я тогда переименовал только текст HomeView.html
вернуться к HomeView.cshtml
и снова получил 406
Наконец, и в отчаянии я добавил тип MIME на сервер, который отображает .cshtml
-> text/html
но, конечно, это не имело никакого значения, так как я не служу .cshtml
файлы.
Почему Нэнси (или, возможно, IIS7) возвращает 406 Not Acceptable
ответ на любой контент, полученный из .cshtml
файлы?
Редактировать Вот след Нэнси. Кажется, чтобы показать, что либо HomeView.cshtml
невозможно найти или что механизм Razor View не используется, поэтому никакие файлы *.cshtml не будут найдены.
Currently available view engine extensions: sshtml,html,htm
Это тогда приводит к внутреннему исключению Нэнси:
Nancy.ViewEngines.ViewNotFoundException
Тем не менее, точно такие же файлы сайта работают локально и правильно вызывают движок Razor View и, следовательно, находят HomeView.cshtml
,
Я все еще в тупике.
_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
1 ответ
Ответ был прост. Мне просто нужно было
- удалить пакет Nancy.Viewengines.Razor (NuGet)
- установить пакет Nancy.Viewengines.Razor (NuGet)
- Очистить проект
- Рекомпилированные
- передислоцировать
Вуаля! Я должен был сделать это 16 часов назад, я считаю.