Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态URL重写c#_C#_Url Rewriting - Fatal编程技术网

动态URL重写c#

动态URL重写c#,c#,url-rewriting,C#,Url Rewriting,我有动态网址放在我的网页。目前我正在做的是使用iis中的url重写器模块映射这些url。这应该是预先配置的。我在web.config中看到了这些规则 无论如何,我不能预先了解我得到的URL。 例如:对于这个问题,URL将是 我想在我的web应用程序中放的是MyWeb/ans1、MyWeb/ans2、MyWeb/ans3、MyWeb/ans4 因此,我需要在我的重写器中有四条规则(在本例中) 我想在动态(运行时)中实现url重写。我不能预先确定那些规则。为实现这一目标,有没有工作要做?

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

无论如何,我不能预先了解我得到的URL。 例如:对于这个问题,URL将是

我想在我的web应用程序中放的是MyWeb/ans1、MyWeb/ans2、MyWeb/ans3、MyWeb/ans4

因此,我需要在我的重写器中有四条规则(在本例中)

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


谢谢

您可以尝试ManagedFusion.net,这是一个开源Url重写器项目,它比IIS重写模块提供了更多的功能。看

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

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.
    }
}
公共类蜘蛛侠引擎:ApacheEngine
{
/// 
///遵守规则。
/// 
///上下文。
///重定向Uri
公共重写Uri运行规则(HttpContextBase上下文)
{
//您可以在这里定义任何动态规则。
}
}
并在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>


您使用的是哪种web技术?ASP.NETMVC?这就像url重写插件一样工作,我没有得到apache引擎的东西。这是如何访问我的动态规则的?它是HttpModule。这里有更多的细节。和。实现引擎并在“public override Uri RunRules(HttpContextBase context)”方法中定义动态规则。上下文包含当前目标url(),您可以返回所需的任何其他URI(),然后请求将转发到新的URI