2016-12-15 159 views
0

我有简单的开箱即用的处理器如何通过网址或其他方式从WebApi项目调用Handler.ashx?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace XXX.XXX.WebApi.Controllers 
{ 
    /// <summary> 
    /// Summary description for Handler1 
    /// </summary> 
    public class Handler1 : IHttpHandler 
    { 

     public void ProcessRequest(HttpContext context) 
     { 
      context.Response.ContentType = "text/plain"; 
      context.Response.Write("Hello World"); 
     } 

     public bool IsReusable 
     { 
      get 
      { 
       return false; 
      } 
     } 
    } 
} 

我的文件结构

enter image description here

如何通过URL调用这个Hello World示例?我经历了很多教程去了,总有一些事情是错误的......像App_Code文件夹等

有什么我想(或用)

https://msdn.microsoft.com/en-us/library/ms228090.aspx

https://www.codeproject.com/articles/538589/theplustruthplusaboutplushttphandlersplusandpluswe

和许多其他的事情,而不成功在我的情况。有任何想法吗?

+0

你给web api项目添加处理程序的原因是什么? – Darren

+0

我读过ashx很适合处理文件,并且有人说ashx最适合那种文件。 –

+0

问题是你在混合技术。真的,这听起来像你想知道如何接受一个Web API中的文件 - 这是更好的问题,然后 - 像这样http://stackoverflow.com/questions/34168395/how-to-post-and-receive- a-file-with-web-api - 处理程序以不同的方式做到这一点(更简单但不一定更好) - 我将在控制器中使用,而不是在web api项目中使用处理程序 – Darren

回答

1

您必须映射处理程序,但是,它不是mvc意义上的控制器,所以我会将它置于应用程序的特殊文件类型处理程序的位置。

要连接它,您需要通过配置使ASP.NET知道处理程序。

<httpHandlers> 
    <add verb="*" path="*.myext" type="Handler1"/> 
</httpHandlers> 

谨慎的字 - 做这个应用程序是要同时利用MVC处理管道与传统的ASP.NET管道。

你不直接调用你的处理程序。您已经指定您有兴趣检查具有特定延期和/或路径的请求,而这通常会被忽略。要测试处理程序,只需发送一个http请求到端点,该端点将解析为您指定要处理的处理程序的内容。

相关问题