2012-01-10 41 views
0

我一直使用的地址的HttpHandler的,並有一個問題檢測一個HttpHandler

如果我有一個處理程序被註冊在web.config中的地址A.hdlr我可以創建一個鏈接到該處理程序將去http://www.mysite.com/A.hdlr - 輝煌。

但是,如果我更新我的web.config文件這個地址將不再有效。是否有辦法檢測處理程序當前配置的地址(如果確實配置了它),以便我可以相應地更新鏈接?

編輯補充:

我目前已經配置在

<system.webServer><handlers> 

部分的處理形式

<add name="MyHandler" verb="GET" path="MyHandler.hdlr" precondition="integratedMode" type="MyType" /> 

但是我打開的建議 - 我擔心的是,直接在代碼中引用「MyHandler.hdlr」將會中斷,如果有人更新此配置地址

+0

更新web配置文件是什麼意思?你能更清楚嗎? – Anand 2012-01-10 11:05:41

+0

如果我從A.hdlr的處理程序更新配置的地址到Foo.hdlr – Liath 2012-01-10 11:06:45

+0

根據我的理解糾正我。你已經註冊了* .hdlr擴展名,由A.ashx處理,但現在有一個擴展名變成了Foo.ashx?在web配置中也沒有配置地址。請參閱下面的如何配置它。 – Anand 2012-01-10 11:11:22

回答

1

更新web配置文件是什麼意思?你能更清楚嗎?

我知道註冊處理程序的唯一方法是在web配置文件中提供其名稱或擴展名。

<configuration> 
    <system.web> 
    <httpHandlers> 
     <add verb="*" path="A.hdlr" 
     type="HandlerA" /> 
    </httpHandlers> 
    </system.web> 
</configuration> 

它說,如果資源A.hdlr被請求,那麼它必須由HandlerA.ashx處理。

好的,現在我已經清楚瞭解你的擔憂。是的,如果某些機構更改了Foo.hdlr,那麼Foo.hdlr資源將由MyType處理程序提供。但想想爲什麼有人會這樣做?這與編寫具有不良邏輯的代碼相同。

您可以通過編寫代碼修改web.config來動態註冊處理程序(但它會重新啓動應用程序域)。但是這並不能保證某些機構不能修改你的動態代碼。 web.config中的條目應該仔細處理。

+0

我目前在部分以然而,我願意提出建議 - 我擔心的是,如果有人更新此配置地址,直接在代碼中引用「MyHandler.hdlr」會中斷 – Liath 2012-01-10 11:17:56

+0

好吧,現在我對您的關注有清晰的瞭解 – Anand 2012-01-10 11:21:11

+0

看到我的回覆 – Anand 2012-01-10 11:26:57