gpt4 book ai didi

url - asp.net 自定义 HttpHandler 和 URL 路由

转载 作者:行者123 更新时间:2023-12-04 15:27:17 24 4
gpt4 key购买 nike

我想通过自定义 HttpHandler 处理对我的应用程序“http://example.com/whateverpath”的请求,但返回的内容取决于“whateverpath”的值。

因此,访问“http://example.com/path1”的用户将获得与访问“http://example.com/path2”的用户不同的响应,但两个请求必须在同一个 HttpHandler 中处理。这个想法是在数据库中找到“whateverpath”,并根据结果返回响应内容。

我听说了 URL 路由并且我已经有一个自定义的 Http 处理程序在工作,但是我可以结合这两种技术来获得我需要的东西吗?

我将不胜感激任何关于此问题的评论。

干杯
弗兰克·阿贝尔

最佳答案

所以你有一个实现 IHttpHandler 的类被称为:MyHandler它在命名空间 Example 中,您需要在站点的Web.Config中进行以下输入在 httpHandlers部分:

<httpHandlers>
<add verb="*" path="*" type="Example.MyHandler"/>
</httpHandlers>

由于这会将您网站/应用程序的所有 URL 重定向到您的处理程序,因此您必须考虑如何提供静态内容(imgs、脚本、样式表等)。一种方法是将此类静态内容存储在一致的 URL 中,例如 http://example.com/static/... ,然后您可以将处理程序设置为:
<httpHandlers>
<add verb="*" path="*" type="Example.MyHandler"/>
<add verb="GET,HEAD" path="static/*" type="System.Web.StaticFileHandler" />
</httpHandlers>

对于您的本地开发网络服务器(嵌入在 Visual Studio 中),这就是所需要的。对于 IIS,您还需要告诉 IIS 如何处理这些 URL(因为服务器首先分析请求以决定将它发送到哪里——包括是否将它发送到 ASP.NET 或其他一些扩展)。
  • 打开:IIS管理器->
  • 栏目:网站->
  • 右键单击您的网站 ->
  • 选项:属性 ->
  • 标签:主页目录 ->
  • 按钮:[配置...] ->
  • 标签:映射 ->
  • 部分:“通配符应用程序映射(实现顺序):”->
  • 按钮:[插入...] ->
  • 可执行文件:“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”(或您的处理程序使用的任何版本的 .NET 运行时)->
  • 取消选中“验证该文件存在”->
  • 按钮:[确定]

  • 现在 IIS 和 ASP.NET 都知道如何处理您的 URL。

    上述方法意味着在请求静态文件时,ASP.NET 实际上是在为文件提供服务,而不是 IIS - 这会导致一些缺点(讨论 here)。您可以通过将目录切换到应用程序(在 IIS 管理器中)、删除通配符映射语句(在上面添加)并将其从应用程序切换回来来覆盖此行为(从静态目录禁用通配符映射)。 Voilà - 静态文件由 IIS 处理,而不会纠缠您的 ASP.NET。

    关于url - asp.net 自定义 HttpHandler 和 URL 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4320247/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com