Тип или имя пространства имен «Продукты» не существует в пространстве имен «Umbraco.Web.PublishedContentModels». - PullRequest
0 голосов
/ 16 февраля 2020

Я поддерживаю решение Umbraco (версия 7.15.3). Недавно была обнаружена ошибка: при переходе на определенную страницу происходит сбой со следующей ошибкой:

Тип или имя пространства имен «Продукты» не существует в пространстве имен «Umbraco.Web.PublishedContentModels». (вам не хватает ссылки на сборку?)

Это не удивительно, в последнее время было несколько обновлений версий, выполненных людьми, которые больше не работают в компании. Например, ModelBuilder (который, я считаю, связан с этим) был недавно обновлен с версии 3.0.7 до 3.0.10.

Не зная об этой проблеме, я сначала попытался выследить Umbraco.Web. .PublishedContentModels. К моему удивлению, он не был в umbraco \ Umbraco.Web \ Lib или umbraco \ Umbraco.Web \ bin, и когда я создавал решение, оно не было сгенерировано.

В конце концов я нашел его в папке, которая выглядела следующим образом:

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files \ root \ 74e32662 \ fd1a65f5 \ assembly \ dl3 \ 09bc313a \ c9c37261_f6d1d501

Странно то, что у сервера UAT есть одно такое расположение, у рабочего сервера их 4 (пути отличаются только в последнем имени папки ).

К счастью, хотя эта ошибка обнаруживается в рабочей среде, и когда я запускаю проект локально, страница работает только в среде UAT. Поэтому я взял dll из UAT и скопировал в umbraco \ UmbracoWeb \ bin на рабочем сервере. Это решило проблему, но это только временное решение. Если я не исправлю это должным образом, в следующий раз, когда кто-то внесет изменение и повторно развернет производство, проблема, скорее всего, вернется.

У меня есть страница с именем Products.cs html, в первой строке которой указано следующее :

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage<ContentModels.Products>
@using ContentModels = Umbraco.Web.PublishedContentModels;

Бит 'Products' в первой строке подчеркнут и дает мне ту же ошибку в VS, что и во время выполнения. Подозревая, что причиной может быть обновление сборки ModelBuilder, я попытался проверить версию до обновления. Но ошибка все еще там.

У решения также есть другой проект, на который ссылается проект Umbraco. У него есть класс под названием Products, но я не знаю, связано ли это каким-либо образом. Класс Products ничего не наследует.

Как я могу это исправить? Есть ли способ воссоздать правильную dll Umbraco.Web.PublishedContentModels и правильно ли на нее ссылаться?

1 Ответ

0 голосов
/ 17 февраля 2020

ModelsBuilder управляется несколькими настройками, которые хранятся в вашем web.config, и может быть настроен для работы различными способами - см. Здесь для справки - Документация построителя моделей

Похоже, у вас есть этот набор PureLive

Я всегда предпочитал включать их как часть моего исходного кода, генерируя их, когда что-то меняется, и используя их как часть моего решения.

enter image description here

Всякий раз, когда вы изменяете тип документа через Umbraco Admin, эти файлы восстанавливаются и могут быть зарегистрированы как часть вашего контроля версий , Затем они могут быть скомпилированы в dll / проект по вашему выбору.

enter image description here

Надеюсь, это поможет

...