asp.net 自定义 HttpHandler 和 URL 路由

2024-03-31

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

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

我听说过 URL 路由,并且我已经有一个正在运行的自定义 Http 处理程序,但是我可以结合这两种技术来获得我需要的功能吗?

我将不胜感激任何尊重这个问题的评论。

干杯 弗兰克·阿贝尔


所以你有一个实现的类IHttpHandler称为:MyHandler它在命名空间中Example,您需要在网站的Web.Config in the http处理程序 http://msdn.microsoft.com/en-us/library/bya7fh0a%28v=VS.80%29.aspx部分:

<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 http://bytes.com/topic/asp-net/answers/553719-system-web-staticfilehandler-has-limit)。您可以通过将目录切换到应用程序(在 IIS 管理器中)、删除通配符映射语句(上面添加)并将其从应用程序切换回来来覆盖此行为(禁用静态目录中的通配符映射)。 Voilà - 静态文件由 IIS 处理,而不会困扰您的 ASP.NET。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

asp.net 自定义 HttpHandler 和 URL 路由 的相关文章

  • 节点遗留 url.parse 已弃用,用什么代替?

    require url parse someurl com page 已被仅弃用 并且我们严格的 linter 对此不满意 我尝试用互联网建议的内容替换我们的代码中的它new URL someurl com page 在大多数情况下都有效
  • 扩展 PHP 正则表达式以涵盖“srcset”和“style”属性

    我创建了一个 WordPress 插件 可以将所有链接变成协议相关 URL https en wikipedia org wiki Wikipedia Protocol relative URL 删除http and https 基于我在中
  • PHP 中的基本 URL

    我有一个两难的困境 它已经困扰我很长一段时间了 我有一个本地测试服务器 其设置如下 127 0 0 1 我的网站在离线模式下如下所示 127 0 0 1 websitename index php 我的网站实时版本如下所示 websiten
  • 使用 HttpHandler 或 HttpModule 上传大文件?

    我有一个网络表单应用程序 它需要能够上传大文件 100MB 我打算使用 httpHandler 和 httpModule 将文件拆分为chunk 我也看过http forums asp net t 55127 aspx http forum
  • 在 ASP.NET 中使用 HTTP 处理程序生成图像以在电子邮件中显示

    我正在生成一个条形码图像作为 HTTP 处理程序的响应 如下所示 public void ProcessRequest HttpContext context context Response Clear context Response
  • Rails 3:使用 AJAX 请求更新 URL 参数

    我有一个过滤器和一个产品列表 id 名称 创建日期 我可以按 ID 名称或创建日期进行过滤 通过 AJAX 请求 我更新了内容 div 但显然 URL 没有改变 如何将参数附加到 URL 例如 localhost 3000 dashboar
  • 带有日期的铁路路线

    因此 我有一个每周日历视图 并且设置了一条路线来接受 year month day 作为开始日期 match events year month day gt events index constraints gt year gt d 4
  • ZF2 路线参数带斜杠

    是否可以使用包含正斜杠的参数来组装路由 Config someroute gt array type gt Zend Mvc Router Http Segment options gt array route gt someroute p
  • Angular - UI 路由器路由 - HTML5 模式

    我正在尝试在我的 Angular 应用程序中使用 HTML5 推送状态链接 我拥有的是一系列类似于以下的路线 stateProvider state product url product productCode templateUrl p
  • 如何从网址中删除查询?

    我正在使用 scrapy 抓取一个网站 该网站似乎将随机值附加到每个 URL 末尾的查询字符串 这将爬行变成了一种无限循环 我如何让 scrapy 忽略 URL 的查询字符串部分 See urllib urlparse http docs
  • 控制器名称是从类名称派生的吗?

    这是一个新手问题 我正在查看默认的 asp net mvc3 项目 注意到有一个名为 public class AccountController Controller 我查看了整个代码 找不到指定 AccountController 映射
  • HTAccess - 令人困惑的干净网址

    如果我想简单地重定向 clients page to clients php view page我会使用像这样简单的东西 它效果很好 Options FollowSymlinks RewriteEngine on RewriteRule c
  • JS Sapper:将数据发布到服务器(正确的方法?)

    如何使用 Sapper JS lib 正确地将数据发布到服务器 说 我有一个页面 板编辑器 我可以在其中从用 SVG 编写的六边形网格中选择 取消选择图块 并在存储数组中添加 减去十六进制坐标 然后用户填写一个表单 其中包含板 名称 作者和
  • Google 地图 API 标记图标 URL?

    我正在尝试将标记图标更改为 红圈 或 红针 或其他任何内容 在这些代码中 markerOptions icon images beachflag png 标记不显示 但如果我做icon一行注释行 因此标记显示为 red pin icon 所
  • URL 中的 %2F 中断并且未引用所需的 .php 文件 [重复]

    这个问题在这里已经有答案了 我需要将 作为变量作为 URL 的一部分传递 我的结构如下所示 www domain com listings page 1 city Burnaby South type Townhome bedroom 2
  • 主页的 RefineryCMS 路线不起作用

    刚刚开始使用RefineryCMS 抱歉新手问题 它在本地运行良好 并幸运地部署在 Heroku Cedar 堆栈上 创建了一个名为 主页 的页面 pages home 响应良好 路线 rb root to gt pages home 并在
  • 如何使用更新资源控制器 laravel 4?

    我有带有索引 编辑 更新方法的客户控制器 Route resource customer CustomerController 控制器方法更新 public function update id echo id 我的 HTML 表单
  • Asp.net MVC 路由 - 防止通过约束路由到 XML 文件

    我正在尝试找到一种方法来阻止用户访问特定的 xml 文件 我尝试过做 routes MapRoute SiteMap SiteMap siteMap xml new new isLocal new LocalHostRouteConstra
  • 如何从 HTTP URL 下载文件?

    我知道如何使用wget从FTP下载但我无法使用wget从以下链接下载 如果您将其复制并粘贴到浏览器中 它将开始下载 但我想将它直接下载到我们的服务器 这样我就不需要将它从我的桌面移动到服务器 我该怎么做 Thanks 这就是我所做的 wge
  • 是否可以使用自定义类型属性的内容创建果园自动路线?

    我有一个 Orchard cms 模块 设置了一些附加的内容类型 并通过代码添加了一个 AutoRoute 组件 一切都很完美 但是我对默认的永久链接模式不满意 我想要做的是添加自定义模式并使用我的内容类型中的公共属性之一 就我而言 自定义

随机推荐

  • 拖动左上角时如何调整div大小?

    In CSS3 resize http www w3schools com cssref css3 pr resize asp 要调整大小的图标位于右下角 如何使其显示在左上角并使用户能够相应地调整大小 我发现了here http dev
  • 如何设置 AntiForgeryToken cookie 路径

    前者HtmlHelper AntiForgeryToken https msdn microsoft com en us library dd492243 28v vs 118 29 aspx方法允许人们重写string path已弃用 O
  • Android 列表视图中的卡片翻转

    我需要创建一个列表视图的视图 这应该是一个自定义列表 因为我希望列表中的每个项目都是一个图像视图 触摸时会翻转以显示详细信息 我正在根据 android 参考资料查看 Card Filp 视图 使用片段 但我觉得我错过了一些非常重要的东西
  • Python:点击字符串时从文本文件打印接下来的x行

    情况如下 我有一个 txt 文件 其中包含多次 nslookups 的结果 我想循环 tru 文件 每次遇到字符串 非权威答案 时 脚本都必须打印以下 8 行from那个位置 如果它有效 我应该在屏幕上得到所有积极的结果 首先我有以下代码
  • 获取当前日期(以毫秒为单位)(UTC)(不使用字符串)

    好吧 你可能认为这个问题已经被问过 但我认为还没有 我读过的解决方案都有这种 拼图游戏 技术 比如getUTCMonth getUTCMinutes 但由于我只想比较两个 UTC 日期之间经过的秒数 因此这不适用 众所周知 您可以通过以下方
  • AngularJs 无法在 module.run 中注入 $provide 和 $injector 服务

    我正在尝试在 angularjs 中动态定义服务 正如文档所说 provide https docs angularjs org api auto service 24provide and injector https docs angu
  • Java整数等于字符?

    如果这个问题有点简单 我很抱歉 但我有点困惑为什么我的教授会做出以下声明 请注意 read 返回一个整数值 使用 int 作为返回类型允许 read 使用 1 来指示它已到达流的末尾 您会记得在 Java 简介中 int 等于 char 这
  • 使用 ng-class 添加多个类

    警告 此线程适用于旧的 AngularJS 我们可以有多个表达式来添加多个 ng class 吗 for eg div div 如果是的话 任何人都可以举个例子来这样做 当不同的表达式求值时应用不同的类true div Hello Worl
  • Javafx 实时线程更新

    我同时使用 Javafx 和线程 我经常遇到这个问题 我制作一个按钮 然后当单击该按钮时 使用事件处理程序 我制作一个 for 循环 将按钮更改为 1 2 3 4 5 然后在每个中间延迟一秒钟 就像倒计时一样 但发生的情况是它延迟了 5 秒
  • 性能说明:预热后代码运行速度变慢

    下面的代码运行完全相同的计算 3 次 它没有做太多事情 基本上将 1 到 100m 之间的所有数字相加 前 2 个块的运行速度大约是第三个块的 10 倍 我已经运行这个测试程序超过 10 次 结果显示差异很小 如果有的话 我希望第三个块运行
  • 安装 Swashbuckle.AspNetCore 包后,Aspnet core 2.2 默认路由更改为“~/index.html”

    在我的 Asp net Core MVC 应用程序中安装 Swashbuckle AspNetCore 后 默认路由将被 index html 页面覆盖 我现在使用 的地方是将我的应用程序重定向到 index html 而不是默认的 MVC
  • 如何推断两个人之间的财产是兄弟

    我需要推断一个人是另一个人的兄弟 如果他们有同一个父亲 所以 如果我有这个 巴特有父亲荷马 丽莎有父亲荷马 Because Bart and Lisa有同一个父亲 我想推断 丽莎有弟弟巴特 有没有什么方法可以利用任何属性特征来做到这一点 使
  • MediaCodec 和 TextureView 的 Z 顺序问题

    在我的 Android 应用程序中 我需要使用以下 Z 顺序渲染三个视图 在底部 输出表面MediaCodec解码器覆盖整个屏幕 我有一个要求 我必须转换生成的图像MediaCodec 例如缩放 中间有一个GLSurfaceView 或我定
  • 如何修改 Grails 中的域类?

    我无法弄清楚在自动创建相应的数据库表后修改域类的 标准做法 是什么 Grails 中没有 迁移 而且我无法告诉它输出它将生成的新 SQL 以便您可以将其与之前的表定义进行比较并手动发出您自己的 ALTER TABLE 命令 这就是我所做的
  • R:index()或index.xts()改变了时间序列的Date值,为什么?

    我想从使用 getSymbols 获得的时间序列中提取日期 但是当我使用 index index xts 函数时 返回的日期似乎早了一天 我无法理解为什么下面的代码中会发生这种行为 然而 预期的行为是获取与原始时间序列中的日期对象相对应的日
  • 仅在处理同一主题的 SQS 订阅后调用 AWS Lambda SNS 事件

    我想实现一个 Amazon SNS 主题 它首先将消息传递到作为该主题订阅者的 SQS 队列 然后执行也是同一主题订阅者的 AWS Lambda 函数 然后 Lambda 函数可以从 SQS 队列读取消息并并行处理其中的多个消息 数百个 我
  • 使用 HTML5 Web 数据库存储文件以供离线访问

    我正在尝试为 iPad 创建一个简单的网络应用程序 需要在没有互联网连接的地方使用 该应用程序本质上是一个简单的 幻灯片 但还包含一些视频文件 通常约为 100MB 最初 我计划在上路之前使用 HTML5 的离线清单缓存将资源同步到 iPa
  • 替换 C++ 矩阵类中特定颜色的所有像素

    1 我有一个矩阵类 Mat src imread pic png 0 http i1265 photobucket com albums jj502 anizilla demo result png http i1265 photobuck
  • 是否可以制作带有 UL/LI 且无图像的滑块? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 因此 我在谷歌上寻找滑块教程 我发现了很多 但都是图像 我想知道是否可以用 ul 元素制作一个没有图像的滑块 例如 UL 的宽度为 300
  • asp.net 自定义 HttpHandler 和 URL 路由

    我想通过自定义 HttpHandler 处理对我的应用程序 http example com whateverpath 的请求 但返回的内容取决于 whateverpath 的值 因此 访问 http example com path1 的