两个参数自定义URL。重写在IIS中,想不通语法

问题描述 投票:1回答:2

我已经设置这和它工作得很好https://www.iis.net/learn/extensions/url-rewrite-module/using-custom-rewrite-providers-with-url-rewrite-module

但我想要做的是改变将触发关闭,这样我可以有更多的参数的存储过程。在他们的样本规则,你结束了这个

<rule name="DbProviderTest" stopProcessing="true">
<match url="(.*)" />
<conditions>
    <add input="{DB:{R:1}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:1}" />

因此,在页面上我设定新的变量,我叫ENVIRON。我希望做的是对测试和生产不同的规则。所以我修改了RewriteTable以包括“环境”一栏。

什么有我难倒的是,我无法弄清楚如何将两个参数传递给存储过程。我认为这将是为这样的事情一样简单

<add input="{DB:{R:1},{ENVIRON}}" pattern="(.+)" />

我试过许多其他的语法,但我不断收到同样的错误500.x:

过程或函数“GetRewrittenUrl”预计参数“@env”,但未提供该

所以我的问题很简单,创建此设置时,如何一个比一个参数的存储过程传递更多?

iis-7 url-rewrite-module
2个回答
0
投票

按照Microsoft Documentation:“提供者连接到SQL Server数据库,并执行一个存储过程,需要包含输入的URL字符串一个NVARCHAR输入参数,并返回包含NVARCHAR类型的输出URL字符串一排,一列结果集。”

不幸的是你要实现的目标是不可能的,因为这种存储过程只能接受一个参数(必须叫@input)。


0
投票

所以你不能使用第二个参数,但是,你可以替换{R:1}用分隔参数数据库。

即。 {DB:{R 1}}可能成为{DB:{HTTP_HOST} / {R 1}}

然后你就可以改变你的存储过程来处理这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.