C# EPiServer,id作为查询字符串中的键,id被url重写器劫持,是否对指定位置使用重写器?
我重写了一个旧的应用程序,它有相当多的外部应用程序重定向到包含?id={someid}查询字符串的特定url。。然而。。episerver似乎对id键做了一些操作。。因为Request.QueryStrings.AllKeys中从来没有显示过。所以我猜epi正在做某种url重写之类的事情。。是否有任何方法可以绕过此问题,并且只能对特定的页面/位置使用id键?查询字符串参数id由EPiServer保留。你需要在EPi接触它之前检查它C# EPiServer,id作为查询字符串中的键,id被url重写器劫持,是否对指定位置使用重写器?,c#,asp.net,url-rewriting,query-string,episerver,C#,Asp.net,Url Rewriting,Query String,Episerver,我重写了一个旧的应用程序,它有相当多的外部应用程序重定向到包含?id={someid}查询字符串的特定url。。然而。。episerver似乎对id键做了一些操作。。因为Request.QueryStrings.AllKeys中从来没有显示过。所以我猜epi正在做某种url重写之类的事情。。是否有任何方法可以绕过此问题,并且只能对特定的页面/位置使用id键?查询字符串参数id由EPiServer保留。你需要在EPi接触它之前检查它 更新:如果您升级到EPi 7.5,查询参数“ID”将不再由EPi
更新:如果您升级到EPi 7.5,查询参数“ID”将不再由EPi处理,除非您注册一个EPiServer.Web.Routing.ClassicLinkRoute。我建议使用IIS 7 url重写模块将ID查询字符串键转换为不会与EPiServer冲突的内容,在url重写提供程序内转换友好url后,as id用于EPIServer内部url中的页面id。 IIS url重写模块将使您有机会在点击EPiServer之前进行更改 您可以编写一个正则表达式来捕获id参数,这样就可以将以下规则添加到重写配置中
<rule name="QueryString">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{QUERY_STRING}" pattern="(.*)id=([a-zA-Z0-9_-]+)(.*)" />
</conditions>
<action type="Rewrite" url="{R:1}?{C:1}oldid={C:2}{C:3}" appendQueryString="false" />
</rule>
您使用的是哪种EPi版本?