C# 如何调用';是在我的控制器(ASP.NET MVC)的Http处理程序文件(.ashx)中定义的吗?
我完全不熟悉.ashx和Http处理程序。但是,我要做的是从控制器中调用.ashx文件中定义的方法 例如,我的.ashx定义如下:C# 如何调用';是在我的控制器(ASP.NET MVC)的Http处理程序文件(.ashx)中定义的吗?,c#,asp.net-mvc,httphandler,ashx,ihttphandler,C#,Asp.net Mvc,Httphandler,Ashx,Ihttphandler,我完全不熟悉.ashx和Http处理程序。但是,我要做的是从控制器中调用.ashx文件中定义的方法 例如,我的.ashx定义如下: public class proxy : IHttpHandler { public void ProcessRequest (HttpContext context) { HttpResponse response = context.Response; ... 现在,在我的控制器中,我想执行如下操作: [HttpPost] publ
public class proxy : IHttpHandler {
public void ProcessRequest (HttpContext context) {
HttpResponse response = context.Response;
...
现在,在我的控制器中,我想执行如下操作:
[HttpPost]
public int PostPicture(HttpRequestMessage msg)
{
proxy.ProcessRequest(...);
...
我知道您可以通过导航到URL(http://server/proxy.ashx?ProcessRequest
),但我认为这不是我需要的。我想从控制器内部调用ashx方法。如果这不是一个推荐的方法,请原谅——正如我所说,我对ashx是新手,不确定实现它们的适当方式
您应该从另一个助手类中的
代理
类中提取逻辑。提取的方法不应该直接引用HttpContext
,而应该只引用所需的数据,例如,byte[]imageData
。从代码中的两个位置调用此方法(假设需要保持处理程序的兼容性)。这里有两种方法可以将控制器中的当前httpcontext调用为.ashx:
HttpContext-context=HttpContext.ApplicationInstance.context代码>
HttpContext context=(HttpContext)HttpContext.GetService(typeof(HttpContext))代码>
[HttpPost]
public int PostPicture(HttpRequestMessage msg)
{
HttpContext context = HttpContext.ApplicationInstance.Context;
proxy.ProcessRequest(context);