首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET 4.0下的UrlRewriter.NET无法正常工作

.NET 4.0下的UrlRewriter.NET无法正常工作
EN

Stack Overflow用户
提问于 2011-02-03 11:17:25
回答 7查看 4.8K关注 0票数 2

我有一个web项目,它已经安装了UrlRewriter.NET,并且在本地的.NET 3.5上运行良好。

然后我把它升级到了.NET 4.0,并继续在我本地的Visual Studio2010电脑上工作。

当我把这个.NET 4.0项目移到我的服务器上时,url重写停止了。

这是我的web.config (为了提高可读性,这里进行了压缩)

代码语言:javascript
复制
<?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:我删除了

代码语言:javascript
复制
<httpModules> 

部分,然后添加了

代码语言:javascript
复制
<identity impersonate="false"/>

然后还将validateIntegratedModeConfiguration=更改为“true”。仍然是同样的问题,但至少现在在集成模式下得到了验证。

更新3:我现在正在尝试ManagedFusion,但仍然遇到错误,但这看起来更像是我的配置错误,而不是服务器支持。我提出了另一个问题ManagedFusion Url Rewriting not working

希望这能解决我的问题。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-02-05 03:28:54

将重写模块更改为Url Rewrite Module。我也有同样的问题,所以改变就解决了我的问题。

票数 1
EN

Stack Overflow用户

发布于 2011-02-03 22:24:22

您正在使用哪种类型的应用程序池?UrlRewrite不适用于.NET 4.0的标准应用程序池,您的应用程序池必须仅配置为.NET 4.0管道模式。

票数 3
EN

Stack Overflow用户

发布于 2011-02-03 20:40:48

您可以使用适用于.net 4.0和GoDaddy的备用重写器。例如托管Fusion URL重写器和反向代理。

我的猜测是,与GoDaddys中等信任配置相关的某些权限导致了您看到的不一致。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4882329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档