Не удалось загрузить тип 'System.Web.Mvc.ViewUserControl <SOMETYPE>' - PullRequest
10 голосов
/ 10 мая 2010

Я пытаюсь развернуть проект ASP.NET MVC 2 (VS2010) на Win Server 2008 R2

Отлично работает на компьютере разработчика. Но странная ошибка возникает в Server 2008 R2: Когда файл .ascx имеет заголовок, который использует универсальный тип:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyProj.Web.Models.RangeViewModel>" %>

Отчеты сервера Не удалось загрузить тип 'System.Web.Mvc.ViewUserControl '.

Но когда я объявляю где-нибудь в .cs тип файла, такой как

public class AA : System.Web.Mvc.ViewUserControl<MyProj.Web.Models.RangeViewModel>
{
}

и используйте его вместо этого в заголовке <% @ Control </em>. Тогда все работает как надо.

Я что-то упустил?

UPDATE

Я развертываю приложение в два этапа (на сервере):

  1. Восстановление решения VS из исходного кода с использованием командной строки MSBuild (для .NET 4)
  2. Запустить пользовательскую задачу msbuild (для этого есть файл publih.msbuild), которая выполняет две цели: Targets = "ResolveReferences; _CopyWebApplication"

Ответы [ 4 ]

14 голосов
/ 10 мая 2010

Я вижу, что у движка представления есть проблемы с компиляцией строго типизированного базового класса в атрибуте Inherit. У меня была та же проблема, и обновление раздела "pages" в Web.Config помогло:

 <pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        <controls>
          <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
        </controls>
        <!-- rest of your pages section -->
</pages>
5 голосов
/ 10 мая 2010

Не могу найти почему, но помогло следующее (web.config):

<pages
         pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
         pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
         userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">

Первоначально найдено подобное для asp.net mvc 1

1 голос
/ 22 ноября 2013

У меня была похожая проблема. Есть несколько важных моментов

  1. Необходимое расстояние между скобками и именем типа.
  2. Нужна модель для вашей модели.

Вот что я получил

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl <MyNamespace.MyModel>" %>
<%@ Import Namespace="MyNamespace" %>
<% var model = (MyModel)Model; %>

<h1><% model.MyField %></h1>
0 голосов
/ 10 мая 2010

Может быть испорчена установка ASP.NET MVC на сервере. Я предлагаю удалить MVC и переустановить с помощью установщика веб-платформы. У меня тоже были проблемы при установке с использованием загруженных файлов настроек, поэтому я удалил все и пошел с установщиком веб-платформы.

Другим предложением было бы сделать новую свежую серверную коробку - может быть виртуальной - и попробовать там.

Также может помочь перестройка решения и проверить, что web.config тоже в порядке.

Также попробуйте, если инструмент MvcDiagnostics.aspx показывает какие-либо отклонения. Проверьте это сообщение в блоге

Дайте нам знать, если что-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...