我是一个新手! 最近在搞那个url从写! 我最开始用的httpModules 来实验的! 首先 网上下载一个URLRewriter.dll 我用的1.0.2896.30326版本的
然后写一个类 在该类中引用 URLRewriter.dll ; 然后
写个类继承 URLRewriter.BaseModuleRewriter
重写它的 protected override void Rewrite(string requestedPath, System.Web.HttpApplication app)
然后就可以在该类中实现相应的重写规则;
if (requestedPath.Contains("匹配后的网站"))//Contains(string value) 查询 value在string中是否出现 返回bool值
app.Context.RewritePath("真实的网址");
这里我们可以把那些重写规则写到数据库中然后读取数据库中的重写规则然后就方便些了,这种方式不可以用正则 有时候稍郁闷 !
然后再web.config 注册 这个类就可以了
<httpModules>
<add name="URL" type="url.myrewritter"/>//这个具体写法要看自己的类了
</httpModules>
这样后重写到是实现了;可是又有问题出现了
实现url重写的基本方法
1. 下载ms的URLRewriter.dll,放到你的web程序的bin下
下载地址1: http://www.sinoec.cn/fordown/URLRewriter.dll
下载地址2:
download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi
下载完成后,在web.config里设置:
<?xml version="1.0" encoding="utf-8" ?>
<!--overred-->
<configuration>
<configSections>
<section name="RewriterConfig"
type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/d(\d+)\.aspx</LookFor>
<SendTo>~/default.aspx?id=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
<system.web>
<httpHandlers>
<add verb="*" path="*.aspx"
type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>
这样后我用 服务器控件的 <asp:Image ID="Image1" runat="server" ImageUrl="~/image/123.jpg" /> 就没用错误了;真很不解,为什么用上面的那种方式写服务器控件的路径出问题呢??我还不明白!