Asp.Net动态创建网页并浏览
本帖最后由 ymhd5 于 2011-08-01 18:05:52 编辑
问题如题目:
详细:就是我浏览一个网址,注:对应的网页在网站是“没有”的,然后我在Global中加入了代码(下面附上)即:如果没有这个网页,就创建它。
但是问题出现在:VS2008的服务器下是完全没问题的,部署到自己的iis6.0和网站的iis7.0都不运行Global代码,而是先检索是否存在,不存在,直接返回NO FOUND!~~
我故意在WebConFig写个错误,依然返回NO FOUND~!!!,换句话讲,放到iis服务器上,服务器不会先运行webconifg,Global 而是先检索???是这样吗?
这个貌似和别人的Global的事件不运行又不一样。。。。
请大侠帮帮忙。。。
附上Global中的代码:
protected void Application_BeginRequest(object sender, EventArgs e)
{
string path = Request.PhysicalPath;
if (!System.IO.File.Exists(path))
{
System.IO.StreamWriter sw = new System.IO.StreamWriter(path,false,Encoding.UTF8);
sw.Write("Hello 我是刚被创建的页面!~~");
sw.Flush();
sw.Dispose();
}
}
PS:不要百度复制给我,我不需要,谢谢……
------解决方案--------------------
当客户端请求一个服务器资源时,这个HTTP请求会被inetinfo.exe进程截获(www服务),然后Check请求资源的类型,并依据资源映射信息(存储在IIS元库中,一种IIS专用的配置数据库)将请求的资源分配给特定的处理程序模块。若请求的是静态资源(img,text,html等)则由IIS处理(IIS在本地Web Server上访问请求的文件),将内容输出到控制台,发出请求的浏览器就能接收到它了。若需要在服务器端处理的请求,则会被传到已注册的扩展模块中,aspx请求会被分配给aspnet_isapi.dll,让这个程序开始处理代码,生成标准的HTML代码,然后将这些HTML加入到原有的HTML中,最后把完整的HTML返回给IIS,IIS再把内容发送到客户浏览器。
对于你想实现的方式,建议把这些动态页面通过一个统一接口页面连进来,即 a.aspx?url=b.aspx 的方式,返回在a.aspx中判断是否存在b.aspx。不存在就创建,并重定向。
------解决方案--------------------利用URL重写应该可以解决,
RewriteRule /(\w+).html /servlet.aspx [I,L]
这样在servlet.aspx页面进行处理,不知可行否。