首页新闻找找看学习计划

Asp.Net在Global.asax.cs文件中进行URL重写,报404

0
悬赏园豆:5 [已解决问题] 解决于 2016-10-10 16:34

在Global.asax.cs文件中进行URL重写,然后代码运行的时候没问题,网站发布出来在iis服务器上就报404.0找不到文件了,

把.aspx文件重写成了.html文件报404.

如果把.aspx文件重写成.aspx(把参数什么的进行整理)则不报错.

目前认为是需要进行IIS映射配置,服务器是server2008sp1,IIS是7.0.

具体需要怎样映射,跪求.

Global.asax.cs中的重写部分

 1 protected void Application_BeginRequest(Object sender, EventArgs e)
 2         {
 3             string url = Request.AppRelativeCurrentExecutionFilePath;
 4             Regex regex = new Regex(@"~/([A-Za-z]+).html");
 5             Regex regex1 = new Regex(@"~/([A-Za-z]+)_(\d+).html");
 6             Regex regex2 = new Regex(@"~/([A-Za-z]+)_(\d+)_(\d+).html");
 7             if (regex.IsMatch(url))
 8             {
 9                 string realPath = regex.Replace(url, @"/$1.aspx");
10                 Context.RewritePath(realPath);
11             }
12             else if (regex1.IsMatch(url))
13             {
14                 string realPath = regex1.Replace(url, @"/$1.aspx?pag=$2");
15                 Context.RewritePath(realPath);
16             }
17             else if (regex2.IsMatch(url))
18             {
19                 string realPath = regex2.Replace(url, @"/$1.aspx?cat=$2&pag=$3");
20                 Context.RewritePath(realPath);
21             }
22         }
壹木壹浮生的主页 壹木壹浮生 | 初学一级 | 园豆:3
提问于:2016-03-14 21:23
< >
分享
最佳答案
0

你这3个正则顺序判断有误吧,越复杂的应该放到最前面做判断。应该是regex2,regx1.regex

收获园豆:5
唯我独萌 | 小虾三级 |园豆:532 | 2016-03-16 08:22

谢谢大神指点,URL重写的映射应该怎么弄呢?跪求

壹木壹浮生 | 园豆:3 (初学一级) | 2016-03-16 09:12

@ToBug: 伪静态:http://www.cnblogs.com/hongz29299/p/5121959.html

唯我独萌 | 园豆:532 (小虾三级) | 2016-03-16 10:31

@唯我独萌: 谢谢大神,这种配置方法我也会,现在纠结上面写的那种呢

壹木壹浮生 | 园豆:3 (初学一级) | 2016-03-16 10:41
其他回答(3)
0

要看404是iis报的还是运行时报的.IIS报的就得在iis配置运行时处理所有请求.

吴瑞祥 | 园豆:28675 (高人七级) | 2016-03-14 21:32

是IIS报的:

HTTP 错误 404.0 - Not Found

您要找的资源已被删除、已更名或暂时不可用。

详细错误信息
模块 IIS Web Core
通知 MapRequestHandler
处理程序 StaticFile
错误代码 0x80070002
请求的 URL http://**********/Product_0_2.html
物理路径 C:\*****\Product_0_2.html
登录方法 匿名
登录用户 匿名
 
最可能的原因:
  • 指定的目录或文件在 Web 服务器上不存在。
  • URL 拼写错误。
  • 某个自定义筛选器或模块(如 URLScan)限制了对该文件的访问。
可尝试的操作:
  • 在 Web 服务器上创建内容。
  • 检查浏览器 URL。
  • 创建跟踪规则以跟踪此 HTTP 状态代码的失败请求,并查看是哪个模块在调用 SetStatus。有关为失败的请求创建跟踪规则的详细信息,请单击此处
链接和更多信息 此错误表明文件或目录在服务器上不存在。请创建文件或目录并重新尝试请求。

查看更多信息 »

支持(0) 反对(0) 壹木壹浮生 | 园豆:3 (初学一级) | 2016-03-14 21:48
0

你要在iis中加上针对html这种后缀的请求的映射

Daniel Cai | 园豆:10374 (专家六级) | 2016-03-23 18:31

大神,我现在就是不知道该怎么映射才行

支持(0) 反对(0) 壹木壹浮生 | 园豆:3 (初学一级) | 2016-03-23 18:37
0

我刚刚解决了!

刚注册的账号稍后和你说

 

数字马鞍山 | 园豆:202 (菜鸟二级) | 2016-11-02 20:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册