0
您好,我目前正在为我的学校开发一种wiki系统,该系统使用子域来查找wiki所属的课程。示例math1.wiki.com将成为数学1课程。 现在,所有这些wiki都使用相同的数据库并提供wiki ID,以查找要加载的数据。动态网站,全球访问会话
这里是我用来查找wiki ID的代码。 的Global.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;
}
这是一切优秀的,但我想使MVC系统发送404请求,如果没有维基被发现的子域。但是,这不仅可以在session_start()中完成,因为它仅在每个会话中运行一次,因此我使用Application_BeginRequest尝试过,但可惜我没有访问方法中的会话。
做任何人知道我可以如何实现这个?
如果此人使用链接并直接转到其他控制器会怎么样?然后,该网站不会被检查,并打开错误! – Androme 2011-04-18 14:00:39