我有一个web项目,它已经安装了UrlRewriter.NET,并且在本地的.NET 3.5上运行良好。
然后我把它升级到了.NET 4.0,并继续在我本地的Visual Studio2010电脑上工作。
当我把这个.NET 4.0项目移到我的服务器上时,url重写停止了。
这是我的web.config (为了提高可读性,这里进行了压缩)
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
</configSections>
<system.web>
</system.web>
<rewriter>
<rewrite url="~/Neat-Url" to="~/Ugly-Url.aspx?id=1"/>
</rewriter>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule"/>
</modules>
</system.webServer>
</configuration>当放在服务器上时,它只返回一个404。
有趣的发现。如果我创建了一个名为/Neat-Url的目录,url重写将再次开始工作,并重定向到/Ugly-Url.aspx?id=1
注意:是的,我意识到.NET 4.0有它自己的url重写,我也有与UrlRewriter一起工作的现有代码。
那么,我的失败是因为这是一个服务器配置问题,还是有办法解决这个问题呢?
更新:好的,我决定了另一件事。除非文件或目录确实存在,否则url重写器不会工作。
例如。如果我想将/Directory1重定向到/Directory1.aspx,/Directory1必须存在,那么一切都很好。
如果我想将/File1.aspx重定向到/File2.aspx,也可以这样做,但文件系统上必须存在File1.aspx。
否则我会继续得到404分。这似乎可以通过.NET解决,并与web.config有关,因为对File1.aspx的调用会传递给运行时并获得asp.net 404。调用目录仅获得web主机404。
更新2:我删除了
<httpModules> 部分,然后添加了
<identity impersonate="false"/>然后还将validateIntegratedModeConfiguration=更改为“true”。仍然是同样的问题,但至少现在在集成模式下得到了验证。
更新3:我现在正在尝试ManagedFusion,但仍然遇到错误,但这看起来更像是我的配置错误,而不是服务器支持。我提出了另一个问题ManagedFusion Url Rewriting not working。
希望这能解决我的问题。
发布于 2011-02-05 03:28:54
将重写模块更改为Url Rewrite Module。我也有同样的问题,所以改变就解决了我的问题。
发布于 2011-02-03 22:24:22
您正在使用哪种类型的应用程序池?UrlRewrite不适用于.NET 4.0的标准应用程序池,您的应用程序池必须仅配置为.NET 4.0管道模式。
发布于 2011-02-03 20:40:48
您可以使用适用于.net 4.0和GoDaddy的备用重写器。例如托管Fusion URL重写器和反向代理。
我的猜测是,与GoDaddys中等信任配置相关的某些权限导致了您看到的不一致。
https://stackoverflow.com/questions/4882329
复制相似问题