首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpHandler重定向

HttpHandler重定向
EN

Stack Overflow用户
提问于 2010-04-29 21:57:18
回答 2查看 3.5K关注 0票数 2

我想写一个HttpHandler重定向流量到服务器上的各种网页。用户将键入http://www.thisissupposedtoberedirected.com/site12,并应被重定向至适当的站点,在本例中为站点版本1.2

我知道如何用ASP.NET和C#编程,但我似乎不太了解网站管理的细节。

我怎样才能做到这一点呢?我应该在web.config中做些什么?我读过这篇msdn page,但帮助不大。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-29 22:06:33

HttpHandlers实际上是相当简单的组件。

首先,您需要创建一个继承IHttpHandlerIHttpAsyncHandler的类(对于您的使用,我建议使用IHttpHandler,因为实际上并没有完成繁重的工作)。

然后编译DLL并将其放入web应用程序的bin文件夹中。

现在是棘手的部分。在web.config文件中部署HttpHandlers很棘手,因为在IIS6、IIS7集成模式和IIS7经典模式之间是不同的。最好的地方是这个MSDN页面:

How to: Register HTTP Handlers

IIS6

代码语言:javascript
复制
<configuration>
  <system.web>
    <httpHandlers>
      <add verb="*" path="SampleHandler.new" 
        type="SampleHandler, SampleHandlerAssembly" />
    </httpHandlers>
  <system.web>
</configuration>

IIS7经典模式

代码语言:javascript
复制
<configuration>
  <system.web>
    <httpHandlers>
      <add verb="*" path="SampleHandler.new" 
        type="SampleHandler, SampleHandlerAssembly" />
    </httpHandlers>
  <system.web>
  <system.webServer>
    <add name=SampleHandler" verb="*" path="SampleHandler.new" 
      Modules="IsapiModule" 
      scriptProcessor="FrameworkPath\aspnet_isapi.dll"
      resourceType="File" />
  </system.webServer>
</configuration>

IIS7集成模式

代码语言:javascript
复制
<configuration>
  <system.webServer>
    <handlers>
      <add name="SampleHandler" verb="*" 
        path="SampleHandler.new" 
        type="SampleHandler, SampleHandlerAssembly" 
        resourceType="Unspecified" />
    </handlers>
  <system.webServer>
</configuration>

正如您所看到的,每个IIS配置都需要web.config文件中略有不同的部分中的条目。我的建议是在每个位置添加条目,这样IIS配置更改就不会破坏您的HttpHandler。

票数 6
EN

Stack Overflow用户

发布于 2010-04-29 22:05:12

1)您需要创建一个实现IHttpHandler或IHttpAsyncHandler的新类(后者是当您非常熟悉管理自己的线程时)。在那里创建您的逻辑。

2)然后,修改web.config以便注册您的处理程序:

代码语言:javascript
复制
<system.web>
    <httpHandlers>
      <add verb="*" path="*.htm" type="System.Web.StaticFileHandler"/>
      <add verb="*" path="*.html" type="System.Web.StaticFileHandler"/>
      <add verb="*" path="*.ico" type="System.Web.StaticFileHandler"/>
    </httpHandlers>
</system.web>

这是我的web.config中的一个示例设置-您的设置可能会略有不同。

现在,您的HttpHandler应该已注册,并且根据您在web.config中注册时提供的详细信息,当您请求某些URL时,您将被映射到您创建的处理程序,而不是普通的ASP.NET页面处理程序。

此外,对于您的特定问题,我不建议编写HttpHandler -我只会做一个DNS重定向,或者在您的OnInit代码中做一些查找来检查主机Url,如果它是在您的数据库中指定的,您可以根据配置数据自己进行重定向。

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

https://stackoverflow.com/questions/2737886

复制
相关文章

相似问题

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