本人自己写个伪静态,
在vs里运行没有问题。但是在IIS里肯定会报404,
有没有什么办法解决呢??我现在用的是iis7,最后也讲讲其他版本的IIS
问题补充:
配置文件: <add verb ="*" path="*.html" type="UrlWriter"/>
HttpHandler
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
///UrlWriter 的摘要说明
/// </summary>
public class UrlWriter : IHttpHandler
{
public UrlWriter()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
//本人想自己写个伪静态。在vs上可以运行。在iis不能运行。
public void ProcessRequest(HttpContext context)
{
//http://localhost:5906/UrlWriter/Default_id_3.html
//id代表参数名;3代表参数的值!
//物理路径
string url = context.Request.Url.ToString();
string urlNew = url.Substring(url.LastIndexOf('/') + 1, url.LastIndexOf('.') - url.LastIndexOf('/') - 1);
//参数值
string arg = "";
//参数名
string type = "";
//是否有参数
bool isHas = false;
foreach (char item in urlNew)
{
if (item == '_')
{
arg = urlNew.Substring(urlNew.LastIndexOf('_') + 1);
type = urlNew.Substring(urlNew.IndexOf('_') + 1, urlNew.LastIndexOf('_') - urlNew.IndexOf('_') - 1);
isHas = true;
}
}
if (isHas)
{
string name = urlNew.Substring(0, urlNew.Length - arg.Length - type.Length - 2);
context.Server.Execute(name + ".aspx?" + type + "=" + arg);
}
else
{
context.Server.Execute(urlNew + ".aspx");
}
}
public bool IsReusable
{
get { return true; }
}
}