从URL中删除页面扩展名后,Web方法停止工作

时间:2014-07-08 07:17:52

标签: asp.net url-rewriting webmethod

我在web.config中使用以下规则来删除" .aspx"来自网址

  <rule name="RemoveASPX" enabled="true" stopProcessing="true">
              <match url="(.*)\.aspx" />
              <action type="Redirect" url="{R:1}" />
          </rule>
          <rule name="AddASPX" enabled="true">
              <match url=".*" negate="false" />
              <conditions>
                  <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                  <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                  <add input="{URL}" pattern="(.*)\.(.*)" negate="true" />
              </conditions>
              <action type="Rewrite" url="{R:0}.aspx" />
          </rule>

页面方法工作正常,但在添加此规则web.config后,它们停止工作。如果我从web.config中删除它,他们就开始工作了。任何人都可以解释为什么会这样。我用谷歌搜索但没有得到任何线索。

1 个答案:

答案 0 :(得分:0)

这是因为规则AddASPX正在向所有传入的网址添加.aspx,但是那些直接引用文件或指向的网址,或者是一个点。

如果您的网页mehtod网址看起来像path\page.aspx\methodname,则不会修改它们,因为其中有.(点)。但是,如果您的网址如下所示:path\page\methodname,则会将其重写为path\page\methodname.aspx,这就是他们停止工作的原因。

您必须确定适用于此情况的模式,并实现忽略它的条件。您需要确定失败的URL的外观。您可以使用fiddler或浏览器控制台(按F12打开它)查看请求的网址。