[英]Why am I getting System.FormatException when adding rewrite rules to ASP.NET Core web application?
我有一个ASP.NET Core Web应用程序,正在尝试配置一些URL重写规则。 我希望为每个环境使用不同的规则,因此在Startup.cs
添加了以下行:
app.UseRewriter(new RewriteOptions()
.AddIISUrlRewrite(env.ContentRootFileProvider, $"IISUrlRewrite.{env.EnvironmentName}.xml")
);
然后,我将IISUrlRewrite.development.xml文件添加到我的Web项目的根目录中,该文件包含以下内容:
<rewrite>
<rules>
<rule name="Redirect extensionless URLs to lowercase" stopProcessing="true">
<match url="[A-Z]" ignoreCase="false" />
<action type="Redirect" url="{ToLower:{URL}}" />
<conditions logicalGrouping="MatchAny">
<add input="{REQUEST_FILENAME}" pattern="\." negate="true" />
</conditions>
</rule>
</rules>
</rewrite>
但是,当我运行我的应用程序时, UseRewriter
方法调用会引发异常:
System.FormatException:'无法解析UrlRewrite文件。 消息:“无法识别的参数类型:URL”,终止于字符串索引:“ 13”。 行号“ 5”:“ 8”。
我不知道对ASP.NET Core中的URL重写规则的结构进行了任何更改,因此这种方法有什么问题? 我正在使用IIS Express在本地运行。
在@ tetsuya-yamamoto的帮助下,我想出了一个有效的规则来将URL重定向到小写字母,但不包括物理文件的路径:
<rule name="Convert to lower case" stopProcessing="true">
<match url=".*[A-Z].*" ignoreCase="false" />
<conditions logicalGrouping="MatchAny">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="{ToLower:{R:0}}" redirectType="Permanent" />
</rule>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.