Нэнси Razor Viewengine не найден

Я использую Нэнси 0.14.1.0 с представлением Razor. Все идет хорошо, пока я работаю с внутренним веб-сервером в VS 2010. Теперь я развернул материал на своем веб-сервере с IIS 6. Маршрут

       Get["/api/v1/admin/clients"] = parameters => {
            return View["Admin/view", new DataAccessLayer(Context).admin_get_clients()];
        };

который возвращает список клиентов (здесь не имеет значения).

Структура каталогов на сервере

bin
Content
Shared
   |--- _Layout.cshtml
Views
   |--- Admin
         |--- view.cshtml

Исключение, которое я ловлю, это

Nancy.ViewEngines.ViewNotFoundException: Unable to locate view 'Admin/view' Currently available view engine extensions: sshtml,html,htm Locations inspected: ,,,,views/api/Admin/view,api/Admin/view,views/Admin/view,Admin/view Root path: C:\Inetpub\Websites\Test\api\ 

Что меня немного беспокоит, так это запись «доступные расширения механизма просмотра»: здесь мне не хватает cshtml... хотя я думаю, что мой web.config содержит правильную запись:

<compilation debug="true" targetFramework="4.0">
  <buildProviders>
    <add extension=".cshtml" type="Nancy.ViewEngines.Razor.BuildProviders.NancyCSharpRazorBuildProvider, Nancy.ViewEngines.Razor.BuildProviders" />
    <add extension=".vbhtml" type="Nancy.ViewEngines.Razor.BuildProviders.NancyVisualBasicRazorBuildProvider, Nancy.ViewEngines.Razor.BuildProviders" />
  </buildProviders>


</compilation>

Модуль Нэнси позади работает нормально: я добавил маршрут

        Get["/api/v1/admin/clients/{id}"] = parameters => {
            return "Hello";
        };

и получить "Привет"...

Любые подсказки?


person decades    schedule 16.01.2013    source источник


Ответы (4)


Вы не развернули пакет Nancy razor или он не может загрузить его по какой-то причине (возможно, отсутствует зависимость), поэтому он не перечисляет типы файлов.

person Steven Robbins    schedule 16.01.2013
comment
развернули пакет бритвы Нэнси? Как? Для себя я уже установил Nancy.Viewengines.Razor.1.4.1 из nuget. - person zwcloud; 25.09.2018

Близко, но упаковка бритвы Нэнси не пропала. Был развернут пакет бритвы Нэнси. Не хватало только System.Razor.dll. Я тоже развернул это и сделал :)

person decades    schedule 16.01.2013
comment
Следовательно, или он не может загрузить его по какой-то причине (возможно, отсутствует зависимость) ;-) - person Steven Robbins; 16.01.2013
comment
Вы имеете в виду System**.Web**.Razor.dll? - person superjos; 21.03.2013
comment
Не ОП, но я считаю, что это System.Web.Razor.dll. В моем каталоге bin\Release был файл с именем Nacy.ViewEngines.Razor.xml. Я видел ссылку на пространство имен System.Web.Razor в файле. Добавив ссылку, установите для Copy Local значение true, и моя проблема, как и у OP, была решена. - person Darren Hale; 18.02.2015
comment
У меня были разные версии System.Web.Razor в проекте приложения и тестовом проекте. Обновление версии в тестовом проекте до версии из проекта приложения устранило проблему. - person ConstantinM; 26.01.2019

Я считаю, что эта проблема все еще возникает с шаблонными проектами Нэнси. Вам нужно удалить и повторно добавить ссылки Nancy nuget. Включение восстановления пакетов кажется недостаточным.

person nathanchere    schedule 12.02.2014

Я столкнулся с этой проблемой при самостоятельном размещении Нэнси из консольного приложения, которое ссылалось на отдельный «веб-проект» DLL. Библиотеки Razor не копировались в выходную папку, хотя проект консоли ссылался на веб-проект, а веб-проект ссылался на соответствующие библиотеки Razor.

Поскольку библиотеки DLL бритвы загружаются динамически, они не копируются в выходную папку консоли. Подробнее об основной проблеме здесь: Is Copy Local переходный для проекта ссылки?

person Frank Schwieterman    schedule 21.05.2015