Маршрутизация веб-формы - не удается создать абстрактный класс - PullRequest
3 голосов
/ 24 марта 2009

Net 3.5 с пакетом обновления 1 (SP1) и попытка внедрить образец копии http://haacked.com/archive/2008/03/11/using-routing-with-webforms.aspx в пример веб-приложения, однако у меня, похоже, возникают некоторые проблемы.

Я использую Windows Vista, IIS 7.0, интегрированный режим.

Ниже приведен YSOD:

Невозможно создать абстрактный класс.

Описание: Произошло необработанное исключение во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.MissingMethodException: Невозможно создать абстрактный класс.

Ошибка источника: Во время выполнения текущего веб-запроса было сгенерировано необработанное исключение. Информацию о происхождении и местонахождении исключения можно определить с помощью приведенной ниже трассировки стека исключений.

Трассировка стека: [MissingMethodException: не удается создать абстрактный класс.] System.RuntimeTypeHandle.CreateInstance (тип RuntimeType, логический publicOnly, логический noCheck, логический и canBeCached, RuntimeMethodHandle & ctor, логический & bNeedSecurityCheck) +0 System.RuntimeType.CreateInstanceSlow (логический publicOnly, логический fillCache) +86 System.RuntimeType.CreateInstanceImpl (логическое значение publicOnly, логическое значение skipVisibilityChecks, логическое значение fillCache) +230 System.Activator.CreateInstance (тип Type, логический непубличный тип) +67 System.RuntimeType.CreateInstanceImpl (BindingFlags bindingAttr, Binder Binder, Object [] args, CultureInfo culture, Object [] активацииAttributes) +1051 System.Activator.CreateInstance (Тип типа, BindingFlags bindingAttr, Binder Binder, Object [] args, CultureInfo culture, Object [] активацииAttributes) +111 System.Web.Configuration.HandlerFactoryCache..ctor (тип String) +57 System.Web.HttpApplication.GetFactory (тип String) +78 System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +229 System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логическое и завершено синхронно) + 155

У меня есть интерфейс, который выглядит так:

public interface IRoutablePage : IHttpHandler
{
    UrlHelper Url { get; }
    HtmlHelper Html { get; }
    RequestContext RequestContext { get; set;}
}

У меня есть абстрактный класс (RoutablePage), который наследует этот интерфейс и System.Web.UI.Page.

У меня есть веб-страница (прикрепленная к главной странице), которая наследует класс RoutablePage.

У меня есть настройки маршрутов в моей веб-конфигурации, и когда я пытаюсь получить доступ к http://local.url/pageName, я получаю YSOD с информацией выше.

Может кто-нибудь помочь решить эту проблему, пожалуйста?

Приветствия

Ответы [ 2 ]

4 голосов
/ 20 июля 2009

У меня была такая же проблема. Мне удалось найти ответ на этом форуме http://forums.asp.net/t/1272109.aspx

Кросс-постинг, что мне помогло:

В Web.config -> system.webserver -> обработчики, замени

  <add name="UrlRoutingHandler"
 preCondition="integratedMode" verb="*"
 path="UrlRouting.axd"
 type="System.Web.Routing.UrlRoutingHandler,
 System.Web.Routing, Version=0.0.0.0,
 Culture=neutral,
 PublicKeyToken=31BF3856AD364E35"/>

С:

  <add name="UrlRoutingHandler"
 preCondition="integratedMode" verb="*"
 path="UrlRouting.axd"
 type="System.Web.HttpForbiddenHandler,
 System.Web, Version=2.0.0.0,
 Culture=neutral,
 PublicKeyToken=b03f5f7f11d50a3a" />
0 голосов
/ 25 марта 2009

Проблема была временно исправлена. Запуск сайта под IIS7 вызывает вышеуказанную проблему, а запуск сайта с использованием cassini, каждый запускается, как и ожидалось, без ошибок.

Любая дополнительная информация по этой проблеме будет приветствоваться.

...