动态URL重写c#

时间:2014-03-20 07:08:07

标签: c# url-rewriting

我有动态网址放在我的网页上。目前我正在做的是在iis中使用url rewriter模块映射这些url。那应该是预配置的。我在web.config中看到了这些规则

无论如何,我无法获得有关我所获得的网址的预知。 举个例子:对于这个问题,网址将是

我想在我的网络应用程序中添加的是MyWeb / ans1,MyWeb / ans2,MyWeb / ans3,myWeb / ans4

因此我需要在我的重写器中有四条规则(在这种情况下)。

我想在动态(运行时)中实现url重写事物。我无法预定义这些规则。有没有做到这一点的工作?将这些规则放到数据库表中并获取它,调用action方法并进行重写部分。或者为什么我不能这样做。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以尝试ManagedFusion.net,一个开源的Url重写器项目,它比IIS重写模块提供更多的功能。请参阅http://managedfusion.com/products/url-rewriter/documentation.aspx

您可以在其配置文件中预先配置规则,并且您可以实现自己的ApacheEngine来运行动态规则。

public class SpidermanApacheEngine : ApacheEngine
{
    /// <summary>
    /// Runs the rules.
    /// </summary>
    /// <param name="context">The context.</param>
    /// <returns>the redirect Uri</returns>
    public override Uri RunRules(HttpContextBase context)
    {
        // you can define any dynamic rule here.
    }
}

并在web.config中替换默认的ManagedFusion引擎:

<managedFusion.rewriter xmlns="http://managedfusion.com/xsd/managedFusion/rewriter">
    <rules engine="Other" engineType="Spiderman.ManagedFusionRewriter.SpidermanApacheEngine, Spiderman.ManagedFusionRewriter">
    </rules>
    <rewriter allowVanityHeader="false" />
</managedFusion.rewriter>