我一直在研究這一點,但沒有遇到一個答案 - 有什麼辦法可以編程方式將HttpHandler添加到ASP.NET網站而無需添加到web.config?以任何方式在.NET中以編程方式添加HttpHandler?
回答
通過添加一個HttpHandler我想你指的是配置文件
<system.web>
<httpHandlers>...</httpHandler>
</system.web>
有一種方法來自動控制的,由請求期間將直接在IHttpHandler
。所以在PostMapRequestHandler in the Application Lifecycle,你會做到以下幾點,在自己的自定義IHttpModule
:
private void context_PostMapRequestHandler(object sender, EventArgs e)
{
HttpContext context = ((HttpApplication)sender).Context;
IHttpHandler myHandler = new MyHandler();
context.Handler = myHandler;
}
這將自動設置該請求的處理程序。很明顯,你可能想用一些邏輯來包裝它,以檢查諸如動詞,請求url等等的東西。但是這是如何完成的。另外這是許多流行的URL重寫器是如何工作的,如:
http://urlrewriter.codeplex.com
但不幸的是,使用pre built configuration handler that the web.confi克不會被隱藏起來似乎並沒有被訪問。它基於名爲IHttpHandlerFactory
的界面。
更新的IHttpHandlerFactory
可以用來就像任何其他的IHttpHandler,只有它被用來作爲一個出發點,而不是一個加工點。看到這篇文章。
感謝尼克 - 這正是我所期待的。 – 2009-12-11 14:21:26
難以根據我的情況使用這種方法。我試圖重新分配處理程序的請求不符合物理文件或任何配置的路由。 PostMapRequestHandler不會在我的情況下觸發,因爲沒有處理程序被發現將請求映射到?看來這些請求觸發的最後一個事件是PostResolveRequestCache,如果我嘗試在該事件處理器或任何之前的事件處理器中重置context.Handler,它就會被忽略。 – Lobstrosity 2014-08-16 00:29:36
我能夠通過調用'context.RemapHandler()'(而不是直接設置'context.Handler')在'BeginRequest'事件處理程序中得到它的工作。 – Lobstrosity 2014-08-16 22:15:34
您可以通過使用一個IRouteHandler類。
- 實現了一類新的IRouteHandler接口,並返回投手爲
GetHttpHandler
方法 - 的結果寄存器路線/
實施IRouteHandler
public class myHandler : IHttpHandler, IRouteHandler
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
// your processing here
}
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return this;
}
}
註冊路線:
//from global.asax.cs
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.Add(new Route
(
"myHander.axd",
new myHandler()
));
}
注意:如果使用Asp.Net Web表單,然後確保你的web應用已在web.config中UrlRouting配置,這裏說明:Use Routing with Web Forms
謝謝!正是我需要的...... – rocky 2015-02-15 14:07:55
- 1. 以編程方式在Excel 2007中以編程方式添加條件格式
- 2. 以編程方式從.Net
- 3. 以預編程方式在Android中以編程方式添加視圖
- 4. 如何以編程方式添加Slidingpanelyout?
- 5. 如何以編程方式添加ZedGraph?
- 6. 如何以編程方式添加UIImage?
- 7. 如何以編程方式添加DataTrigger
- 8. 如何以編程方式添加UIPanGestureRecognizer
- 9. 如何以編程方式添加UITabBarItem?
- 10. 如何以編程方式添加UIBarButtonItem?
- 11. 如何以編程方式添加ProgressBar?
- 12. 在Cocoa/XCode中以編程方式添加快捷方式
- 13. 在.NET Compact Framework中以編程方式添加Web引用
- 14. 在任何活動的底部添加FrameLayout以編程方式
- 15. 2種方式在.NET中以編程方式同步
- 16. 以編程方式添加JPA EntityListener/Spring Data AuditingEntityListener以編程方式
- 17. 以編程方式添加DOJO CheckedMultiSelect
- 18. DataGridView並以編程方式添加列
- 19. 以編程方式添加時間戳
- 20. Log4j2 + Java:以編程方式添加asyncLogger
- 21. Android以編程方式添加ImageView
- 22. 以編程方式添加UIToolbar
- 23. 以編程方式添加asp.net ajax DragPanelExtender
- 24. 以編程方式添加XmlIncludeAttribute
- 25. 以編程方式添加string.concat
- 26. 以編程方式添加Azure組件
- 27. 以編程方式添加圖像
- 28. VC++以編程方式添加excel OLEObject?
- 29. 以編程方式添加onclick事件
- 30. NSArrayController - 添加:&刪除:以編程方式
Intresting,ID喜歡看,如果這是可能的自己。好奇的是,爲什麼不把它添加到web.config?因爲這隻影響一個網站/應用程序不是所有的IIS – Jammin 2009-12-11 13:26:26