TarunShrivastav Ответов: 2

Невозможно привести объект типа "ASP._global_asax" к типу " microsoft.practices.compositeweb.webclientapplication


У меня есть dot.net проект, в котором файл Global.asax был там, но Global.asax.cs(vb) там не было. Поэтому я удалил старый файл Global.asax и создал новый, используя глобальный шаблон в visualstudio 2013, потому что я хочу выполнить некоторую функцию в событии APPlication_Start Global.asax.vb

код GLOBL .asax
&ЛТ;%@ приложение отделенного кода="глобальный.эйсакс.ВБ" наследует="веб-приложение.Global_asax" язык="ВБ" %&ГТ;

Код, если Global.эйсакс.ВБ

Открытый Класс Global_asax
Наследует System.Веб.Класса HttpApplication

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
Тусклый ключ как строка = строка.Пустой
Если (ключ ничего) если (клавиша "") тогда
key = GetJwtTokenFromSource("4201.omse.jul.web", "read_master_reference","", "", "")
ключ = преобразовать.ToString("предъявитель ") & ключ
Конец, Если

CallNM(NMPCodes.Уровень, ключ)
CallNM(MMPCodes.Группа, ключ)

Конец Подводной Лодки
задача, которую я хочу выполнить в start even, работает нормально, но после успешного выполнения этого блока я получаю ниже исключение.

"Невозможно привести объект типа" ASP._global_asax "к типу" Microsoft.Практика.CompositeWeb.WebClientApplication'

Что я уже пробовал:

Если я наследую глобальный характер.ASAX от Microsoft.Практика.CompositeWeb.WebClientApplication

код GLOBL .asax
&ЛТ;%@ приложение отделенного кода="глобальный.эйсакс.ВБ" наследует="Майкрософт.Практика.CompositeWeb.WebClientApplication" Language="vb" %>
Тогда событие Application_start не срабатывает.

F-ES Sitecore

Вы говорите, что это asax, что страница наследует Microsoft.Практика.CompositeWeb.WebClientApplication таким образом, класс в коде позади файла также должен быть производным от этого класса, а ваш-нет. Либо измените класс в коде, стоящем за ним, либо измените тег inherits на Global_asax, в зависимости от того, что подходит для вашего решения.

TarunShrivastav

Если я наследую Asax и код позади файла как с Microsoft.Практикует.CompositeWeb.WebClientApplication тогда событие Application_start моего класса .cs не выполняется.

2 Ответов

Рейтинг:
18

Richard Deeming

То Inherits атрибут в системе .asax файл должен быть именем класса в файле .asax.vb файл.

Класс в центре города .asax.vb файл должен наследовать от составного веб-базового класса.

Глобальные.эйсакс:

<%@ Application Codebehind="Global.asax.vb" Inherits="WebApp.Global_asax" Language="vb" %>

Глобальные.эйсакс.ВБ:
Public Class Global_asax
    Inherits Microsoft.Practices.CompositeWeb.WebClientApplication
    
    ...
End Class


TarunShrivastav

Спасибо за ваш ответ, но я сделал вышеуказанные изменения, как вы предложили. Тем не менее, то же самое происходит Application_Start не срабатывает. Он выполняет какую-то другую функцию.

И visual studio показывает сообщение : sub Application_start затеняет метод переопределения в базовом классе webclientApplication. Чтобы переопределить базовый метод, этот метод должен быть объявлен override.

Richard Deeming

Поэтому следуйте инструкциям в сообщении - объявите метод как переопределение и вызовите базовый метод.

Protected Overrides Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    MyBase.Application_Start(sender, e)
    ...

TarunShrivastav

Спасибо за решение. Теперь он работает так, как ожидалось после переопределения метода.

Рейтинг:
1

Member 2939080

Hi,

I am working on an obsolete project ( in VS 2008) and today while migrating my website to IIS 7 i faced this issue.

I did two things
a. Checked and removed unrequired default document from IIS.
b. Deleted the precompiledapp.config and it start to work as before.

Hope it works for you.

Thanks
Rajkamal