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 часов назад, я считаю.

Другие вопросы по тегам