代码之家  ›  专栏  ›  技术社区  ›  Vladislav Stelmakh

helicon isapi重写器3 asp.net 503.18错误使用不同友好URL的同一页面

  •  2
  • Vladislav Stelmakh  · 技术社区  · 11 年前

    我有一个asp.net网站,里面有很多应用程序、虚拟目录和几个应用程序池。对于URL重写,我使用Helicon ISAPI重写器,版本3。我有一个页面(比如“page.aspx”)应该可以由不同的URL访问,不同的URL会为单个查询字符串参数重写不同的值。所有Helicon规则都在我的本地环境中进行了测试,但在部署到服务器后,我遇到了问题。

    我有URL:

    URL1:'/产品一/'
    URL2:“/产品另一个版本/”

    显示“productone”和“productoneversion”的两个页面上的内容完全相同,但第一个URL可以访问,第二个显示403.18错误。 正如我所发现的,这个错误表明URL被从一个池重写到另一个池。但这毕竟是同一个页面,为什么一个URL有效而另一个无效!

    这些URL成功地(我在helicon和IIS日志中检查过)重写为以下原始URL:
    URL1:'/folder/page.aspx?product=productone'产品
    URL2:'/folder/page.aspx?product=产品版本'

    我有8个不同的“产品”参数选项。如果param等于“productone”或“productoneversion”,并且在页面的其他版本上不同,则页面上的内容相同。8个URL中只有2个通过Helicon工作。其余页面抛出403.18错误。但是,如果我使用具有不同查询参数的原始URL,则所有页面版本都能正常工作。

    请帮助我找出我的设置有什么问题,以及如何修复?

    我的机器:win8企业版,IIS 8
    服务器:win-server 2012,IIS 8

    2 回复  |  直到 11 年前
        1
  •  0
  •   Andrew    11 年前

    如果您在站点甚至池之间进行重写,则不再是重写。这是代理。因此,您需要在规则的末尾使用[P]标志。

    °螺旋,°·°±。

        2
  •  0
  •   Vladislav Stelmakh    11 年前

    我注意到“8个URL中有2个有效”、“/productone/”和“/productfour/”。我还注意到IIS中有一些Web应用程序的名称相同——“产品一”和“产品四”。这些应用程序运行的应用程序池与包含原始页面“page.aspx”的web应用程序相同。

    因此,我在IIS中又创建了六个具有所需名称的web应用程序(“产品二”、“产品三”等),并使它们使用相应的应用程序池,并指向新的空文件夹。

    我知道,这不是一个优雅的解决方案,但它对我有效。