【问题标题】:Custom Rewrite Provider for URL Rewrite ModuleURL 重写模块的自定义重写提供程序
【发布时间】:2014-07-17 00:22:04
【问题描述】:

我有一个用于在 IIS 中运行的 URL 重写模块的自定义重写提供程序,我使用它来根据我的自定义逻辑重定向请求。

基于此:http://www.iis.net/learn/extensions/url-rewrite-module/developing-a-custom-rewrite-provider-for-url-rewrite-module

如何从我的代码中访问输入标头?

【问题讨论】:

  • HttpContext.Current 有值吗?
  • 与其尝试使用整个教程,不如详细说明您尝试过的内容和收到的错误?
  • 刚查过,为空
  • 我创建了一个入站规则,我将匹配 URL 模式定义为 /*,因此它可以捕获任何请求。然后在我设置的操作属性中 {MyProvider: {here is my parameter}} 我试过 X_REQUEST_HEADERNAME 但是我在我的重写方法中得到一个空字符串方法签名是公共字符串重写(字符串值)
  • 我也尝试过传递 {QUERY_STRING} 并且它有效。我的问题是我实际上不能使用查询字符串,规则需要基于标题:'(

标签: c# asp.net url iis rewrite


【解决方案1】:

所以找到了答案,它使用了一个命名约定:

服务器变量也可用于从当前请求访问 HTTP 标头。当前请求提供的任何 HTTP 标头都表示为一个服务器变量,其名称根据此命名约定生成:

HTTP 标头名称中的所有短划线 ("-") 符号都转换为下划线符号 ("")。 HTTP 标头名称中的所有字母都转换为大写。 “HTTP”前缀被添加到标头名称中。

在我的情况下,我在 Action Properties \ Redirect URL 中得到了类似的结果: {RoutingProvider:{QUERY_STRING}|{HTTP_ORGANISATIONID}}

HTTP_ORGANISATIONID 是我的自定义标头。

谢谢

【讨论】:

    猜你喜欢
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 2014-02-19
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多