我已经设置了它,它工作得很好 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',这是未提供的
所以我的问题很简单,在创建此设置时,如何将多个参数传递给存储过程?
答案 0 :(得分:0)
根据Microsoft Documentation:“提供程序连接到SQL Server数据库并执行存储过程,该存储过程采用包含输入URL字符串的 NVARCHAR输入参数并返回一个row,一列结果集,包含NVARCHAR类型的输出URL字符串。“
不幸的是,您尝试实现的目标是不可能的,因为此类存储过程只能接受单个参数(必须称为 @input )。
答案 1 :(得分:0)
因此您不能使用第二个参数,但是,您可以将{R:1}替换为数据库中带分隔符的参数。
即。 {DB:{R:1}}可能会变成{DB:{HTTP_HOST} / {R:1}}
然后,您可以更改存储过程来处理该问题。