标签: httphandler

ASP.NET HttpHandler可以处理http 400 - 错误请求吗?

我们有一个HttpHandler,它直接处理来自自定义客户端软件的HTTP上的二进制帖子.客户端软件偶尔发送数据,导致IIS 7响应400 - 错误请求.由于"400 Bad Request"的特殊之处在于HTTP.SYS在内核模式下透明地处理它而不通知用户模式,因此不会引发任何错误在ASP.NET中处理.是否有可能在ASP.NET中捕获此http 400,以便我可以在这些方案中将特定数据写入Response流?重定向到另一个页面不是一个选项,因为它需要在当前的请求/响应中.

c# asp.net iis-7 http httphandler

9
推荐指数
1
解决办法
3827
查看次数

为什么ASP.NET Routing优先于web.config Http Handlers部分?

我们的工作室正在将ASP.NET MVC集成到一个大型Web应用程序中,该应用程序利用在system.webServer\handlers下的web.config中定义的自定义和第三方HTTP处理程序.以这种方式利用HTTP处理程序对我们来说非常好,因为我们不需要重新编译应用程序,也不需要将实际处理程序页面放在Web范围内的磁盘上,以用于每个产品实例.

是否真的有必要在我们的global.asax中添加显式的忽略路由,以便运行时可以遵守web.config中定义的处理程序?我认为在检查了system.webServer\handlers中定义的处理程序之后会调用Web.Routing (而不是相反).

我们使用模块化设计,允许在添加功能时从web.config添加/删除处理程序.随着MVC路由的引入,我们需要在global.asax文件中为web.config中定义的每个可能的处理程序添加忽略路由.

请注意,磁盘上不存在这些处理程序的实际文件 - 它们是虚拟的并嵌入在程序集中.以下是第三方处理程序的示例,现在需要在global.asax中显式忽略路由:

<system.webServer>
    <handlers>
          <!-- telerik radcontrols -->
          <add name="TelerikDialogHandler" verb="*" path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler, Telerik.Web.UI, Version=2009.1.402.20, Culture=neutral, PublicKeyToken=121fae78165ba3d4"></add>
    </handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

因此,对于记录,如果您使用System.Web.Routing,则必须包含在Web.Config中指定的Http Handler的忽略路由?或许我做错了什么?

asp.net-mvc httphandler asp.net-routing asp.net-mvc-routing

9
推荐指数
1
解决办法
962
查看次数

类型错误:_this.handler.handle 不是函数错误

我收到此错误,即 this.handler.handle 不是我在 Angular 6 中使用 karma/jasmine 进行的单元测试中的函数。当我在我的项目文件夹中输入“ng test”命令时,这个错误出现在我的命令行中。

Chrome 67.0.3396 (Windows 10.0.0) AppComponent should create FAILED    
Failed: _this.handler.handle is not a function
TypeError: _this.handler.handle is not a function
Run Code Online (Sandbox Code Playgroud)

对于应该创建 AppComponent 的测试,这里是我的 .spec 文件

import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { AppComponent } from './app.component';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { FormsModule, FormBuilder } from '@angular/forms';
import { HttpClientModule, HttpClient, HttpHandler } from '@angular/common/http';
describe('AppComponent', () => {
  let …
Run Code Online (Sandbox Code Playgroud)

httphandler karma-jasmine angular

9
推荐指数
2
解决办法
9810
查看次数

asp.net文件下载 - 跟踪下载的大小

我试图用ASP.net/C#设计一个这样的系统.

用户付费下载一些内容(文件 - mp3/PDF,doc等).我应该能够跟踪用户下载的字节数.如果下载的字节数与服务器上的字节数相匹配,我应该在DB中设置一个标志(告知下载成功并阻止他们再次下载文件/要求他们再次支付下载费用).如果下载不完整,他们应该能够再次下载文件而无需再次付款(因为不会设置标志).

有没有办法跟踪客户端成功下载的字节数?

另外,当我在WinXP机器中看到文件大小时,我看到两种尺寸(磁盘大小,大小).我应该考虑哪一个?它会因操作系统而异吗?

asp.net http file httphandler httpmodule

8
推荐指数
2
解决办法
1933
查看次数

为什么ConfigurationManager.GetSection"system.webServer/handlers"不可用?

我正在尝试在我的global.aspx Application_Start方法中读取一些配置.当我读到ConfigurationManager.GetSection("system.web/httpHandlers")一切都很好:

ConfigurationManager.GetSection("system.web/httpHandlers"){System.Web.Configuration.HttpHandlersSection} base {System.Configuration.ConfigurationSection}:{System.Web.Configuration.HttpHandlersSection}处理程序:Count = 48

但是当我读ConfigurationManager.GetSection("system.webServer/handlers")(包含我的自定义处理程序,它返回null.我做错了什么?

该部分如下所示:

<system.webServer>
    <handlers>
        <add verb="*" path="*.loc" name="LocalizedResourceStreamer" 
                 type="CFW.WebUI.HttpHandlers.LocalizedResourceStreamer,WebUI" />
    </handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

笔记:

  • Web.configs是嵌套的,ConfigurationManager.GetSection默认情况下将嵌套考虑在内.
  • 整体问题是试图查看是否正在提供*.loc文件.

至今: 在此输入图像描述 看起来像system.webServer被忽略了.

c# asp.net iis web-config httphandler

8
推荐指数
1
解决办法
4395
查看次数

如何从.cs文件asp.net调用HttpHandler

我已经为我的Jquery ajax调用创建了一个http处理程序.哪个工作正常,jquery调用如下所述

 $.ajax({
    url: "Services/name.ashx",
    contentType: "text/plain",
    data: {
        CustMobile: a,
        CustName: b,
        CustEmail: c
    },
    contentType: "application/json; charset=utf-8",
    success: function (data) {
        $("#loading").hide();
    },
    error: function () {
        $("#loading").hide();
    }
});
Run Code Online (Sandbox Code Playgroud)

现在我的问题是我可以通过后面的代码调用name.ashx处理程序.我在使用带有C#的asp.net.我知道可以通过Response.write("")编写整个脚本部分来调用它.Ans还注册页面脚本方法.
但是有什么方法可以通过它向处理程序发送请求并使用c#从处理程序中获取响应.

谢谢.

c# asp.net httphandler

8
推荐指数
2
解决办法
3万
查看次数

即使用户通过javascript导航后,ASP.NET是否继续可靠地处理请求?

环境:

  • Windows Server 2003 - IIS 6.x.
  • ASP.NET 3.5(C#)
  • IE 7,8,9
  • FF(无论最新的10个版本是什么)

用户场景:

用户输入针对大型数据集的搜索条件.启动请求后,它们将导航到结果页面,等待数据加载,然后可以优化数据.

技术场景:

用户发送搜索条件后(通过ajax调用),UI调用后端服务.后端服务查询事务系统并将结果数据放入db"缓存" - 非规范化表,设置用于进一步细化数据(即排序,过滤).UI等待数据被缓存,然后在收到通知已完成的过程后,导航到结果页面.然后,生成的页面调用以从非规范化表中获取数据.

问题:

对于大型查询,搜索相对较慢(15-25秒),最终必须根据输入的条件查询许多系统.其他查询(<4秒)相对较快.

技术限制:

  1. 我们无法完全重新构建此搜索/结果系统.在UI和后端如何捆绑在一起之间存在许多复杂性.执行搜索条件后,页面是必需的(因为在StackOverflow上无法解决的约束).

  2. 我们也不能要求组织在搜索之前对数据进行非规范化,因为数据必须是实时的,即如果用户在其他系统中进行了更改,则数据必须在之后进行搜索时正确显示.

我想要遵循的流程:

  1. 我想欺骗一点.我想在fire-forget模型中通过异步HttpHandler发出"Cache"请求.

  2. 发出查询后,我想将页面转换为结果页面.

  3. 在转换页面上,我想轮询"缓存"表以查看数据是否已插入其中.

  4. 我想立即转换的原因是结果页面本身很昂贵(即使没有获取数据) - 在调用从缓存中获取数据的服务之前仍然需要2秒的加载时间.

题:

即使我使用javascript重定向导航离开页面,通过异步处理程序调用的ASP.NET线程是否可靠地继续处理?

技术界限2:

是的,我知道......这个搜索过程听起来效率不高.我现在无能为力.在我们继续研究如何重新构建它的同时,我正在尽我所能使它更好地发挥作用.

如果您的答案是:"扔掉它并重新开始",请不要回答.这是不可接受的.

javascript asp.net multithreading asynchronous httphandler

8
推荐指数
1
解决办法
2656
查看次数

从asp.net中的数据库中检索图像

如何使用c#从asp.net中的sql数据库中检索图像.

我想从数据库中检索图像文件,然后在标签中显示图像.

我尝试这个代码,但它无法正常工作

ASPX

 <asp:Image ID="Image1" runat="server" ImageUrl="" Height="150px" Width="165px" />
Run Code Online (Sandbox Code Playgroud)

代码背后

 Byte[] bytes = (Byte[])ds.Tables[0].Rows[0]["image"];
 Response.Buffer = true;
 Response.Charset = "";
 Response.Cache.SetCacheability(HttpCacheability.NoCache);
 Response.ContentType = "image/jpg";
 Response.BinaryWrite(bytes);
 Response.Flush();
 Response.End();
Run Code Online (Sandbox Code Playgroud)

如何给出ImageUrl=""这个图像的链接???

c# sql-server asp.net httphandler

8
推荐指数
1
解决办法
5万
查看次数

删除未使用的HTTP处理程序以获得更好的性能和安全性

我在哪里可以获得所有默认IIS HTTP处理程序的列表?我需要文件!! 我已经阅读了一些博客,建议删除数十个未使用的HTTP处理程序,以提高性能和安全性.

例如,建议删除TraceHandler-Integrated和TraceHandler-Integrated-4.0,否则导航到/trace.axd会导致500内部服务器错误而不是404 Not Found,并且您不应该在生产环境中进行跟踪.

GitHub项目(现已删除)建议从您的站点删除的一些HTTP处理程序:

<system.webServer>
  <handlers>
    <remove name="TraceHandler-Integrated-4.0" />
    <remove name="TraceHandler-Integrated" />
    <remove name="AssemblyResourceLoader-Integrated-4.0" />
    <remove name="AssemblyResourceLoader-Integrated" />
    <remove name="WebAdminHandler-Integrated-4.0" />
    <remove name="WebAdminHandler-Integrated" />
    <remove name="HttpRemotingHandlerFactory-soap-ISAPI-2.0-64" />
    <remove name="svc-ISAPI-4.0_32bit" />
    <remove name="ScriptHandlerFactoryAppServices-Integrated-4.0" />
    <remove name="ScriptResourceIntegrated-4.0" />
    <remove name="svc-ISAPI-4.0_64bit" />
    <remove name="svc-Integrated-4.0" />
    <remove name="vbhtm-ISAPI-4.0_32bit" />
    <remove name="vbhtm-ISAPI-4.0_64bit" />
    <remove name="vbhtm-Integrated-4.0" />
    <remove name="vbhtml-ISAPI-4.0_32bit" />
    <remove name="vbhtml-ISAPI-4.0_64bit" />
    <remove name="vbhtml-Integrated-4.0" />
    <remove name="xamlx-ISAPI-4.0_32bit" />
    <remove name="xamlx-ISAPI-4.0_64bit" />
    <remove name="xamlx-Integrated-4.0" />
    <remove name="xoml-ISAPI-4.0_32bit" />
    <remove …
Run Code Online (Sandbox Code Playgroud)

asp.net security iis performance httphandler

8
推荐指数
2
解决办法
7707
查看次数

如何通过IHttpHandler优先处理Web Api控制器?

我有一个遗留项目有一个IHttpHandler实现类,使用一个巨大的switch语句等路由所有请求.我试图引入属性路由与ApiControllers,但第一个始终具有优先级.是否可以配置系统(代码或IIS),以便Web ApiControllers优先于我的单个IHttpHandler实现类?在IIS中,我首先放置了我的AttributeRouting,然后是所有的aspx,但仍然没有首先处理Web Api控制器.无论我做什么(在同一个项目下都有它们).我不想介绍一个单独的项目.

编辑:有一个IHttpModule根据api /之后的内容决定将其路由到特定的ashx文件.其中一个是描述的..

编辑2:更具体地说:如果uri没有过滤的东西列表[文件,消息,属性...],它将被路由到Resource.aspx

所以api/file,api/message,api/property将从其他.ashx文件中处理 - 否则流量将转到Resource.ashx ...

因此,具有api/endpoint1,api/endpoint2,api/endpoint3的请求都将转到Resource.aspx.问题是如何将api/endpoint3路由到下面描述的API控制器.谢谢

简化的代码架构:

 //SolutionName/Api/MyModule.cs (Legacy Code)
 //this routes based on what is after api/ to Resource.ashx or other ashx files
 public class MyModule : IHttpModule {
    //if url doesn't contain [file,message,property ...] route to Resource.ashx
 }
Run Code Online (Sandbox Code Playgroud)
//SolutionName/API/Resource.ashx (Legacy Code)
//this is hit at any request solutionname/api/anything
public class DefaultHandler : IHttpHandler 
{
   public void ProcessRequest(HttpContext context) {
       String APIBranch = parse(context);
       switch(APIBranch)
       {
           case "endpoint1": methodOne(); break;
           case "endpoint2": …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc httphandler asp.net-web-api

8
推荐指数
1
解决办法
1212
查看次数