是否可以为ASP.NET 3.5预先添加静态重写映射规则
我有: -
<rewriteMaps>
<rewriteMap name="My Name">
<add key="/Sales" value="/Test.aspx?id=10" />
<add key="/Sales-And-Marketing" value="/Test.aspx?id=10&dog=cat" />
</rewriteMap>
</rewriteMaps>
但是想在运行时逐步添加这些吗?
答案 0 :(得分:1)
我知道它有点晚了,但你可以通过在单独的配置中使用url以编程方式进行
<rewrite>
<rewriteMaps configSource="urls.config" />
<rules>
<rule name="Rewrite rule1 for StaticRedirect">
<match url=".*" />
<conditions>
<add input="{StaticRedirect:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Rewrite" url="{C:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
然后,当您的网址发生变化时,您需要写入此配置文件,当通过CMS管理系统更改并保存页面时,我会执行此操作,使用Web服务与客户端网站通信并指示其重建文件。
我唯一的问题是这似乎不想在Visual Studio开发Web服务器
中工作答案 1 :(得分:0)
基本上,您可以在应用程序启动时从一些持久存储(web.config文件,数据库等)加载您在应用程序中创建的一些规则,然后将这些规则保存在内存中。我没有这方面的代码,但我确实有一个代码示例,用于在ASP.NET中从运行时重写URL。查看此链接以获取代码段:
http://www.upfromthesky.com/blog/post/2009/05/04/URL-Rewriting-in-ASPNET-via-HttpModule.aspx
你会注意到我没有很多规则,所以我只是对其中的规则进行了硬编码 - 但是你可以从内存中添加一些内容来加载规则(例如,作为正则表达式)来比较当前的web url请求至。同样,这些也可以存储在xml文件中,这样您就可以在不必每次都重新编译代码的情况下进行更改。