Member 12637386 Ответов: 1

Проблема использования модуля / глобальных переменных в VB.NET


Я пытаюсь определить файловый поток в модуле и сделать его глобальным, но никакие другие файлы modules/aspx.vb его не видят.

Код в 'Что вы попробовали' является моим по умолчанию.aspx-файл.ВБ


Спасибо за любую помощь, я очень, очень застрял.

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

Class _Default
    Inherits System.Web.UI.Page
    Public Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    End Sub
End Class

Public Module GlobalVars
    Public wFile As System.IO.FileStream
    Sub main()
        wFile = New System.IO.FileStream("C:\test.txt", System.IO.FileMode.Append)
    End Sub
End Module

[no name]

Разве ваша IDE не жалуется на позднюю привязку файлов к основной процедуре модуля?
Попробуйте объявить wFile как общий.

1 Ответов

Рейтинг:
11

Richard Deeming

ASP.NET приложения не имеют Main метод как их точка входа. Ваш Sub main() код никогда не будет выполнен.

Ближайшим эквивалентом будет Application_Start событие в Global.asax:
ASP.NET обзор жизненного цикла приложения для IIS 5.0 и 6.0[^]

Однако, ASP.NET это многопользовательская, многопоточная система. Хранение данных в глобальных / общих переменных-это почти всегда неправильно.


Member 12637386

Спасибо, Ричард. И все же что-то здесь не так. Даже если я проигнорирую Sub Main() и попытаюсь просто создать экземпляр -
wFile = новая система.ИО.Хранилище FileStream("C:\test.txt", Система.ИО.Содержит filemode.Добавлять)
Я получаю ошибку, что wFile не объявлен. Я получаю ту же проблему, когда пытаюсь объявить его в global.asax.

Может быть, это общая установка в моем проекте? Я даже не могу установить общедоступную переменную в общедоступной подпрограмме или функции.

Richard Deeming

Попробуйте переместить Module к своим собственным .vb файл под App_Code папка.

Но, как я уже сказал, в ASP.NET, общие / модульные поля почти всегда являются неправильными.

Member 12637386

СПАСИБО. Похоже, это сработало.

[no name]

Очень информативно, 5*