当前位置:编程学习 > C#/ASP.NET >>

Win7 IIS Global.asax执行的问题

我的网站发布到台式机10.1.3.168:8080中
默认页面为 default.aspx


Global.asax文件中其它均为默认,自己没添加什么代码,只在下面这个函数中加入了以下代码:

protected void Application_BeginRequest(Object sender, EventArgs e) 


    if(Request.Url.ToString()=="http://10.1.3.168:8080/abcd")
    {
       Response.Redirect("http://www.sina.com.cn");   
       Response.End();
    }
    else
    {
           
       Response.Redirect("http://www.baidu.com");   
       Response.End();
       return;
       
    }


此时,在浏览器中输入 http://10.1.3.168:8080
可以正常转到http://www.baidu.com页面,
这说明,Application_BeginRequest是可以执行的
另外,在浏览器中输入 http://10.1.3.168:8080/log.aspx
实质上,log.aspx是存在的文件。
也可以正常转到http://www.baidu.com页面,
这也能够说明,Application_BeginRequest是可以执行的

但是,当我在浏览器中输入
 http://10.1.3.168:8080/abcd
就会报错说找不到页面,或者被删除之类的信息

奇怪的是:
以上同样的操作过程,在我的开发笔记本中也同样部署了一个网站,
是可以正常跳转到百度或新浪的,用vs2010调试时也可以跳转,
唯独在台式机上不行,

各位大侠,是环境什么的原因吗?
--------------------编程问答-------------------- 你输入 http://10.1.3.168:8080/abc 试试 --------------------编程问答-------------------- 输入 http://10.1.3.168:8080/abc 
仍然报找不到的错误。

而且,发现一个问题:
我改成下面这样:
protected void Application_BeginRequest(Object sender, EventArgs e) 
 {         
//无条件转向
        Response.Redirect("http://www.baidu.com");   
        Response.End();


此时,在浏览器中输入 http://10.1.3.168:8080
可以正常转到http://www.baidu.com页面,
 这说明,Application_BeginRequest是可以执行的
 另外,在浏览器中输入 http://10.1.3.168:8080/log.aspx
实质上,log.aspx是存在的文件。
 也可以正常转到http://www.baidu.com页面,
 这也能够说明,Application_BeginRequest是可以执行的

但是,当我在浏览器中输入
 http://10.1.3.168:8080/abcd
就会报错说找不到页面,或者被删除之类的信息
输入  http://10.1.3.168:8080/abc
也会报错,
这是为什么?
我笔记本部署的网站和vs2010调试环境下都正常。
唯独台式机部署的网站是这个问题,
我重启IIS、重启机器,都不行。 --------------------编程问答-------------------- 如果 IIS 7.0 在集成模式下运行,App_Code 文件夹或 Bin 文件夹中的自定义模块将应用于请求管线中的所有请求。 Global.asax 文件中的事件处理程序代码则只应用于映射到某个 ASP.NET 处理程序的请求。
--------------------编程问答--------------------
引用 楼主 qq24486838 的回复:
我的网站发布到台式机10.1.3.168:8080中
默认页面为 default.aspx


Global.asax文件中其它均为默认,自己没添加什么代码,只在下面这个函数中加入了以下代码:

protected void Application_BeginRequest(Object sender, EventArgs e) 


    if(……

你应该在APPLICATION_ERROR 里面处理404
而不是在Application_BeginRequest


protected void Application_Error(object sender, EventArgs e)
{
Exception ex = null;
if (HttpContext.Current.Server.GetLastError() != null)
{
ex = HttpContext.Current.Server.GetLastError().GetBaseException();
if (ex.GetType() == typeof(HttpException))
{
HttpException httpException = (HttpException)ex;

if (httpException.GetHttpCode() == 404)

{

Server.Transfer(“~/ErrorHttp404.aspx”);

return;

}

}

}
--------------------编程问答--------------------
引用 2 楼 qq24486838 的回复:
我笔记本部署的网站和vs2010调试环境下都正常。

检查这2个环境的404 是怎么设置的 --------------------编程问答-------------------- 回5楼的:
两台机器的404全是默认设置,如下图:
--------------------编程问答-------------------- 回4楼的:


--------------------编程问答-------------------- abcd你的网站中有这个目录吗?网站的目录权限有没有问题呢?嘿嘿 --------------------编程问答-------------------- abcd是不存在 ,但是我在开发机中运行,是成功被 
protected void Application_BeginRequest(Object sender, EventArgs e) 
  {         
 
         Response.Redirect("http://www.baidu.com");   
         Response.End();
 } 
 
转向了的,
但台式机上就不转向,
而且,我也因此重装了系统,重装了IIS,
仍然不可行。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,