如何在asp.net中发送http请求而不等待响应并且不占用资源

2023-11-24

在 ASP.Net 应用程序中,我需要通过 http POST 将一些数据 (urlEncodedUserInput) 发送到外部服务器以响应用户输入,而不阻止页面响应。其他服务器的响应是什么并不重要,我也不关心请求有时是否失败。这似乎运行良好(见下文),但我担心它会在后台占用资源,等待永远不会使用的响应。

这是代码:

httpRequest = WebRequest.Create(externalServerUrl);

httpRequest.Method = "POST";
httpRequest.ContentType = "application/x-www-form-urlencoded;charset=utf-8";

bytedata = Encoding.UTF8.GetBytes(urlEncodedUserInput);
httpRequest.ContentLength = bytedata.Length;

requestStream = httpRequest.GetRequestStream();
requestStream.Write(bytedata, 0, bytedata.Length);
requestStream.Close();

非常标准的东西,但通常在这一点上,如果您想异步接收响应,您会调用 httpRequest.getResponse() 或 httpRequest.beginGetResponse() ,但这在我的场景中似乎没有必要。

我做的事正确吗?我应该调用 http Request.Abort() 进行清理,还是可以阻止在慢速连接上发送请求?


I think Threadpool.QueueUserWorkItem这就是您正在寻找的。通过添加 lambda 和匿名类型,这可以变得非常简单:

var request = new { url = externalServerUrl, input = urlEncodedUserInput };
ThreadPool.QueueUserWorkItem(
    (data) =>
    {
         httpRequest = WebRequest.Create(data.url);

         httpRequest.Method = "POST";
         httpRequest.ContentType = "application/x-www-form-urlencoded;charset=utf-8";

         bytedata = Encoding.UTF8.GetBytes(data.input);
         httpRequest.ContentLength = bytedata.Length;

         requestStream = httpRequest.GetRequestStream();
         requestStream.Write(bytedata, 0, bytedata.Length);
         requestStream.Close();
         //and so on
     }, request);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在asp.net中发送http请求而不等待响应并且不占用资源 的相关文章

  • 频繁插入已排序的集合

    我已经对集合 列表 进行了排序 并且我需要始终保持其排序 我目前在我的集合上使用 List BinarySearch 然后在正确的位置插入元素 我也尝试过在每次插入后对列表进行排序 但性能不可接受 有没有一种解决方案可以提供更好的性能 也许
  • 如何将网络浏览器从 IE 更改为 Firefox

    我正在使用 System Windows Forms WebBrowser 开发 C NET 应用程序 IE 无法正常响应 所以我想更换为 Mozilla Firefox 我怎样才能做到这一点 你不能 The WebBrowser控件是 I
  • 使用 system.reflection 列出类字段

    我需要获取一个列表来存储类中的所有字段 值 这个班级只是一些公共的const string我在下面粘贴的变量 public class HTDB Cols public class TblCustomers public const str
  • 有没有办法使用 .NET 中的 Kafka Ksql Push 查询

    我目前正在 NET 中使用 Kafka 消费者处理大量 Kafka 消息 我的处理过程的第一步是解析 JSON 并根据 JSON 中特定字段的值丢弃许多消息 我不想首先处理 特别是不下载 那些不需要的消息 看起来 kSql 查询 写为推送查
  • 当视图模型类型为包含超过 4 个项目的元组时,Asp.net mvc 2 .net 4.0 出现错误

    当我在 Asp net mvc 2 net 4 0 中使用模型类型 Tuple 创建强类型视图时 当 Tuple 具有超过 4 个项目时 我会收到错误 示例1 视图类型是Tuple
  • 在 Visual Studio 2010 解决方案级别定位 .NET Framework 的特定版本

    我想在我的 Visual Studio 2010 解决方案中同时针对 NET 3 5 和 NET 4 0 我知道我可以设置
  • 使用AOP技术拦截ADO.Net

    我有相当大的代码库 使用各种不同的 ADO 技术 即一些 EF 在某些情况下直接使用 ADO Net 我想知道是否有任何方法可以全局拦截任何 ADO Net 调用 以便我可以开始审核信息 例如执行的确切 SQL 语句 花费的时间 返回的结果
  • RichTextbox SelectionStart 返回错误的索引

    我需要向用户显示光标上文本的选择开始和长度 就像在 notepad exe 中一样 选择长度没有问题 因为 Richtextbox 支持带有开始和结束的选择属性 http msdn microsoft com en us library s
  • 线程独占数据:如何存储和访问?

    NET 中是否有可能将对象实例绑定到线程的当前执行上下文 这样在代码的任何部分我都可以做类似的事情CurrentThread MyObjectData DoOperation 并确保我访问特定于线程的数据 谢谢 你可以看一下线程静态属性 h
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin
  • SingleOrDefault异常处理

    我有一个示例代码 它调用 SingleOrDefault 方法 3 次 并在任何序列具有多个匹配元素时记录异常 如果我想检查这段代码的哪一部分抛出异常 问题就开始了 是否可以从此异常中获取一些有用的信息 例如谓词参数或集合类型以进行更详细的
  • 如何让CQRS适应项目? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我发现了一个新术语 名叫CQRS 命令查询职责分离 http martinfowler com bliki CQRS html其中指出 概念模型
  • HttpWebRequest 如何处理(过早)关闭底层 TCP 连接?

    当使用 NET 的 HttpWebRequest 类调用远程服务器 特别是 REST Web 服务 时 我很难弄清楚是否有办法处理潜在的连接问题 根据我的调查 WebClient 类的行为是相同的 这在某种程度上是预期的 因为它似乎只为 H
  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • *.tlb 文件在运行时使用过吗?

    我正在开发一个通过 COM 互操作公开一些 NET API 的产品 作为构建的一部分 我们为所有此类程序集生成 tlb 文件 并将它们作为单独 SDK 包的一部分提供 我们的客户可以在我们的产品之上安装 SDK 并创建使用我们的 COM A
  • 将 System.Windows.Forms.Keys 序列转换为 Char

    有没有办法转换由 Keys 枚举表示的击键序列 即System Windows Forms Keys 在一个字符中 例如 Keys Oem4进而Keys A产生 char 它一定存在于 WinAPI 中的某个地方 因为当我在文本框中按下按键
  • 如何在.NET Core上直接调用F#编译器?

    UPD 我想直接从 NET Core SDK 调用 F 编译器 即 fsc 我了解 dotnet build co 但当我只需要编译一个简单的问题时 即 fsc file fs 就足够的情况下 我不想涉及它们 我尝试在 NET Core S
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向

随机推荐

  • 如何使用 Minitest 登录 Devise to Test Controller

    我是 Rails 测试的新手 在遵循一些在线教程后 我可以设置并运行模型测试 但是 当尝试测试控制器时 测试失败 因为它被重定向到登录页面 我已尝试了网上可以找到的所有登录设备的说明 但仍然无法登录并继续 如果有人能提供帮助并给我前进的方向
  • Python 中的列表推导式用于计算列表的最小值和最大值

    我有以下代码来计算列表的最小值和最大值 以节省内存效率 x min float inf x max float inf for p in points in list x min min x min p x max max x max p
  • Pickle 和装饰类(PicklingError:不是同一个对象)

    以下最小示例使用虚拟装饰器 它仅在构造装饰类的对象时打印一些消息 import pickle def decorate message def call decorator func def wrapper args kwargs prin
  • 环视 积极 消极 向后展望

    在谷歌上搜索 vsvim Lookahead 或 Lookbehind 后wiki我似乎不知道如何 或者是否支持前瞻或后视 正数或负数 以及如何使用它们 如果是 我尝试过几种不同的syntaxes like ze lt let w lt l
  • Microsoft Visual Studio ~ C/C++ 运行时库 ~ 静态/动态链接

    我是 Microsoft Visual Studio 用户 我的问题是关于 C C 运行时库 我创建了一个 空项目 其中包含 cpp 源文件 main cpp 其中包含以下代码 include
  • Spring Boot中构造函数的参数0

    启动我的应用程序时遇到问题 有人可以帮我解决这个问题吗 Parameter 0 of constructor in com journaldev elasticsearch service BookServiceImpl required
  • 在 Android 的 Xamarin 表单中使用警报管理器安排通知

    我创建了一个依赖项来显示通知 在 My DeviceDetails Droid cs 中 我将闹钟设置为 30 秒 当应用程序运行时 本地通知功能可以完美运行 活动但当我杀死应用程序 关闭应用程序 时警报接收器 没有被叫到 public v
  • Xamarin Forms InitializeComponent 不存在

    我正在学习 Visual Studio 2015 的 Xamarin Forms 并尝试使用 Xaml 创建一个简单的共享项目 但我不断收到 InitializeComponent 不存在 以及对 cs 类中 Xaml 控件的任何引用 据我
  • Delphi XE2:在 CHM 中跳到锚点?

    在Delphi XE2程序中 如何跳转到CHM帮助文件主题内的锚点 锚点具有以下格式 从显示 CHM 文件的 HTML HelpViewer 中的主题页面源中提取 a a 我尝试了以下方法 Application HelpJump MyTo
  • Selenium Webdriver 添加到 LocalStorage

    我尝试将以下标志添加到LocalStorage但它不起作用 localStorage setItem ClientRedirectEnabled true 我的代码如下 public void FlagIntroduce throws In
  • 将多个 SVN 存储库合并为一个

    在考虑了我之前问题的答案之后 一个 SVN 存储库还是多个 我决定将我拥有的 4 个左右存储库合并为一个 这当然引出了一个问题 最好的方法是什么 有没有办法组合两个或多个存储库来维护两者的版本历史记录 Edit 我还应该指出 我正在使用 A
  • 如何观察ng-content中input元素的变化

    当子组件观察到输入变化时如何调用父组件的函数 下面是 HTML 结构 app comopnent html
  • pandas DataFrame 单列中的多个值

    我正在将一些数据从 XML 解析为 pandas DataFrame XML 数据大致如下所示
  • PHP 中的 HTTP if-none-match 和 if-modified-since 以及 304 说明

    我的问题是当我收到 HTTP 304 未修改 时如何回复bothif none match 和 if modified since 来自代理 客户端请求 来自 RFC 2616 第 14 26 节 http www w3 org Proto
  • 如何对齐两个 y 轴刻度的网格线?

    我正在 y 轴上绘制两个具有不同单位的数据集 有没有办法让刻度线和网格线在两个 y 轴上对齐 第一张图片显示了我得到的东西 第二张图片显示了我想要得到的东西 这是我用来绘制的代码 import seaborn as sns import n
  • 如何缩短 List>>?

    我想在轻量级结构中存储键值对列表的列表 这似乎太麻烦了 什么更好 List gt 会增加很多开销吗 还有哪些其他选择 考虑使用别名作为简写 namespace Application using MyList List
  • 在 Ubuntu 上编译 Fortran netCDF 程序

    好的 这里是新手问题 我正在尝试编译simple xy wr f90 一个 netCDF 示例程序 在 Ubuntu 上使用 gfortran 我一定做了一些非常愚蠢的事情 我没有太多编译 Fortran 的经验 首先 我有libnetcd
  • 如何使用 jQuery 预选选择框中的选项

    我有一个带有各种选项的选择框 当页面加载时 应该使用 jQuery 预先选择一个带有值的选项 例如 10 我怎样才能做到这一点 当页面加载时运行这个 你可以把它放在 option value 10 attr selected selecte
  • 导入和类型:模块的 prisma db 种子和打字稿问题

    我从本教程中学习了 prisma https www prisma io blog fullstack nextjs graphql prisma oklidw1rhw 我的步骤有问题 npx prisma db seed preview
  • 如何在asp.net中发送http请求而不等待响应并且不占用资源

    在 ASP Net 应用程序中 我需要通过 http POST 将一些数据 urlEncodedUserInput 发送到外部服务器以响应用户输入 而不阻止页面响应 其他服务器的响应是什么并不重要 我也不关心请求有时是否失败 这似乎运行良好