【发布时间】:2011-04-18 13:26:20
【问题描述】:
您好,我目前正在为我的学校开发一种 wiki 系统,该系统使用子域来查找 wiki 所属的课程。例如 math1.wiki.com 将是数学 1 课程。 现在所有这些 wiki 都使用相同的数据库并被赋予一个 wiki id,以查找要加载的数据。
这是我用来查找 wiki id 的代码。 全球.asax
protected void Session_Start()
{
var database = new DataContext();
IWikiRepository rep = new WikiRepository(database);
IWikiService service = new WikiService(rep);
var domain = HttpContext.Current.Request.Url.Authority;
var port = "";
if (domain.Contains(':'))
{
var tmp = domain.Split(':');
domain = tmp[0];
port = tmp[1];
}
var split = domain.Split('.');
var subdomain = split[0];
// if (subdomain == "localhost")
// subdomain = "wiki1";
var wiki = service.GetSite(subdomain);
if (wiki == null)
{
Response.StatusCode = 404;
return;
}
Session["CurrentWiki"] = wiki;
}
这很好,但是如果没有找到子域的 wiki,我想让 mvc 系统发送 404 请求。但这不仅可以在 session_start() 中完成,因为它在每个会话中只运行一次,因此我尝试使用 Application_BeginRequest,但遗憾的是我无法访问该方法中的会话。
有谁知道我如何实现这个?
【问题讨论】:
标签: session asp.net-mvc-3 global-asax