这绝对是 Url Aliases 包中的一个错误。
解决这个问题的最快方法可能是推出您自己的 http 模块,至少在发布修复程序之前是这样。您可以从 GitHub 上的包 repo 中获取源并对其进行调整以解决问题,确保您从 web.config 取消注册捆绑的 http 模块并注册您自己的模块。
当前http模块源在这里:https ://github.com/CPHCloud/c1packages-urlaliases/blob/v1.0.2/CphCloud.Packages.UrlAlias/UrlAliasHttpModule.cs
将 的值更改incomingUrlPath
为使用PathAndQuery
而不是AbsolutePath
,如下所示:
...
static void httpApplication_BeginRequest(object sender, EventArgs e)
{
var httpApplication = (HttpApplication)sender;
var incomingUrlPath = HttpUtility.UrlDecode(httpApplication
.Context.Request.Url.PathAndQuery.TrimEnd(new[] { '/' }));
....
在您的 web.config 文件中,您应该取消注册 Url 别名的处理程序
<!--add name="UrlAlias" type="CphCloud.Packages.UrlAlias.UrlAliasHttpModule,
CphCloud.Packages.UrlAlias,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /-->
并注册你自己的
<add name="CustomUrlAlias" type="CphCloud.Packages.UrlAlias.UrlAliasHttpModule,
YourAssemblyName,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
完全披露:我是 URL Aliases 包的作者。