ASP.NET MVC如何从Controller访问Global.asax文件中的属性?

时间:2011-04-01 11:52:42

标签: asp.net-mvc-3 controller global-asax

在Global.asax文件中,我管理了一些线程,并且 - 从Controller - 我需要调用一个线程的事件。是否可以访问该线程?

2 个答案:

答案 0 :(得分:10)

您可以使用应用程序状态来存储将在应用程序的所有用户之间共享的一些对象:

protected void Application_Start()
{
    Application["foo"] = "bar";
    ...
}

在您的控制器内,您可以访问此属性:

public ActionResult Index()
{
    var foo = HttpContext.Application["foo"] as string;
    ...
}

答案 1 :(得分:3)

如果它是任何其他类型的对象,比如字符串,你可以,因为你需要在Global.asax中将属性声明为静态,以使其可用于应用程序的其余部分:

public class Application : HttpApplication
{
    // This is the class declared in Global.asax

    // Your route definitions and initializations are also in here

    public static string MyProperty { get; set; }
}

这将适用于应用程序的其余部分。你可以这样做:

public ActionResult MyAction()
{
    var bla = Application.MyProperty;
}

那就是说,我不认为你想以这种方式为应用程序的其余部分提供Thread