2

是否可以为 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&amp;dog=cat" />
    </rewriteMap>
</rewriteMaps>

但想在运行时以编程方式添加这些?

4

2 回答 2

1

我知道有点晚了,但是您可以通过将网址放在单独的配置中以编程方式进行

    <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>

然后,当您的 url 更改时,您需要写入此配置文件,当通过 CMS 管理系统更改和保存页面时,我会使用 Web 服务与客户端网站对话并指示它重建文件。

我唯一的问题是这似乎不想在 Visual Studio Development Webserver 中工作

于 2009-12-04T12:42:27.020 回答
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 文件中,这样您就可以进行更改,而不必每次都重新编译代码。

于 2009-07-25T00:14:34.577 回答