2017-02-10 54 views
1

有沒有辦法讓DelegatingHandler僅在生產環境中處於活動狀態?喜歡將它添加到配置從web.config,而不是將它添加到Application_Start()作爲GlobalConfiguration.Configuration.MessageHandlers.Add(....從web.config激活DelegatingHandler

+0

不,你需要把它添加到郵件處理程序,但你可以做的是創建處理程序來獲取配置文件的設置,將表明是否應執行其設計目的或只是讓請求通過 – Nkosi

+0

顯示相關處理程序的示例。 – Nkosi

+0

這是執行HTTPS的典型DelegatingHandler。我希望通過HTTP訪問我們的開發環境,並避免開發人員允許IIS Express證書等。 – qazcde

回答

0

不,你需要把它添加到郵件處理程序,但你可以做的是創建處理程序來獲取配置文件的設置,將表明是否應執行其設計目的或只是讓請求通過

僞碼

protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { 

    bool active = //...get configuration value; 

    if(active) { 
     //...perform some action 
    } 

    var response = await base.SendAsync(request, cancellationToken); 

    if(active) { 
     //...perform some action 
    } 

    return response 
} 
+0

我瞭解你的解決方案。看起來很奇怪,鑑於你通常可以從web.config激活類似的行爲,但DelegatingHandlers不是這種情況。 – qazcde

+1

我最終使用#if!DEBUG語法在配置時添加或不添加了處理程序(在調用'config.MessageHandlers.Add(')之前) – qazcde