我有一个带有管理区域的简单 asp.net mvc 4 网站。我已经定义了一个自定义 http 处理程序来处理来自管理区域中运行的 plupload 脚本的上传。这是处理程序的代码:
public class CategoryImageUploadHandler : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
try
{
HttpPostedFile file = context.Request.Files[0];
var categoryID = context.Request["categoryID"];
var fileName = Path.GetFileName(file.FileName);
var parentPath = HttpContext.Current.Server.MapPath("~/Files/Content");
var targetDir = Path.Combine(parentPath, categoryID);
var targetFile = Path.Combine(targetDir, fileName);
//check if Directory exists
if (Directory.Exists(targetDir))
file.SaveAs(targetFile);
else
{
Directory.CreateDirectory(targetDir);
file.SaveAs(targetFile);
}
context.Response.Write("/"+categoryID+"/"+fileName);
}
catch (Exception ex)
{
context.Response.Write("0");
context.Response.Write(ex.Message);
}
}
public bool IsReusable
{
get { return false; }
}
}
它位于主站点的 Handlers/ 目录中。这就是我注册处理程序的方式:
<system.webserver>
<add name="CategoryImageUploadHandler path="Admin/CategoryImageUploadHandler.ashx" verb="*" type="Hitaishi.Web.Handlers.CategoryImageUploadHandler, Hitaishi.Web"/>
<system.web>
<httpHandlers>
<add path="Admin/CategoryImageUploadHandler.ashx" verb="*" type="Hitaishi.Web.Handlers.CategoryImageUploadHandler, Hitaishi.Web"/>
Routeconfig.cs:
routes.IgnoreRoute("{*allashx}", new { allashx = @".*\.ashx(/.*)?" });
但是,当 plupload 从 Admin 区域向 http 处理程序发送 POST 时,调用仍然会被路由拾取,因为它会尝试查找
/Admin/CategoryImageUploadHandler.ashx
我尝试使用斜线来检查我给出的路径是否错误或更改注册中的路径,但似乎没有任何效果。我仍然收到 404 错误。
简而言之,我需要一种从网站的另一个 mvc 区域引用网站主 MVC 区域中定义的 HttpHandler 的方法。有人能帮忙吗?