首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >404的httpModule

404的httpModule
EN

Stack Overflow用户
提问于 2010-09-29 22:17:12
回答 2查看 1.4K关注 0票数 0

我已经创建了一个httpModule来处理URL的重新映射,它在我的测试系统上工作得很好。对www.mydomain.com/Some_Fancy_URL的请求被重写为www.mydomain.com/some.aspx?fancy=23,依此类推。

当我部署到实际的网站时,我得到的是默认的IIS404页面。

在网上做了一些研究之后,我似乎需要在IIS6中设置“通配符映射”,以使请求通过IIS并进入我的httpModule。问题是该站点托管在共享服务器上,因此可能无法让ISP进行此更改。

我的问题是,我不能使用httpHandler来告诉IIS我希望如何处理这些请求吗?例如:

代码语言:javascript
复制
<httpHandlers>
  <add path="*.aspx" verb="GET,POST" type="System.Web.UI.PageHandlerFactory" validate="false"/>
</httpHandlers>

将它添加到我的Web.Config应该会告诉IIS停止验证.aspx文件的存在,而只是将请求传递给我来处理。不过,它不能工作。

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-30 04:03:10

IIS6和ASP.NET的问题在于它们没有集成在一起。需要通过脚本映射(.aspx、.asmx、通配符等)告知IIS有关ASP.NET的信息。

您的任何web.config配置设置都不会影响IIS,因为web.config是用来配置ASP.Net的行为的,而不是IIS。IIS不了解web.config

除非您可以(通过脚本映射)将请求传递到ASP.NET管道,否则不会发生任何事情,并且您的所有web.config设置都将被忽略。

对于IIS 7,情况就完全不同了。在IIS7中,ASP.NET和IIS紧密集成并共享相同的管道,从而使您能够实现所需的结果。

另一种选择可能是找出你的主机是否在他们的服务器上运行了一个网址重写器,比如ISAPI_Rewrite。这样,您就可以重写urls,而不必将通配符脚本映射映射到IIS6。

票数 2
EN

Stack Overflow用户

发布于 2010-10-01 23:28:13

通过一些尝试和错误,以及更多的网络搜索,我找到了一个解决方案。它本质上与凯夫的答案相似。

除非请求具有已知的文件扩展名(.aspx、.ascx等),否则IIS不会将请求视为.NET。当我发送像www.mydomain.com/anything这样的东西时,它会查找名为"anything“的文件或文件夹,如果找不到,它就会跳转到默认的IIS404处理程序。

这就是我接手的地方。我更改了IIS6以将404问题转发到/404.aspx。然后,我用一个通用的“找不到你的文件”的消息创建了这个页面,其风格与我的网站相同。

的好处是:现在IIS正在将404发送到.NET页面,我创建的自定义httpModule 被解雇。该请求是针对404.aspx的,但IIS也很友好,可以附加原始URL。你会得到类似这样的结果:

代码语言:javascript
复制
www.mydomain.com/404.aspx?404;http://www.mydomain.com/anything

这允许我在httpModule中解析请求,并根据需要重写!

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

https://stackoverflow.com/questions/3822455

复制
相关文章

相似问题

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