आप क्या कर सकते हैं प्रति-मार्ग संदेश हैंडलर का उपयोग, लेकिन यहाँ सावधान रहना है। लेख के रूप में @Nick ने अपने उत्तर में लिंक किया है, आप हैंडलर को चेन कर सकते हैं और सुनिश्चित कर सकते हैं कि HttpControllerDispatcher
शामिल है। अन्यथा, आप नियंत्रक पाइपलाइन में नहीं पहुंचेंगे।
जो मुझे पसंद है अपने कस्टम हैंडलर के लिए एक आधार वर्ग के रूप में HttpControllerDispatcher
उपयोग करने के लिए है एक अन्य विकल्प:
public class CustomerOrdersDispatcher : HttpControllerDispatcher {
public CustomerOrdersDispatcher(HttpConfiguration config)
: base(config) {
}
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken) {
// Do some stuff here...
return base.SendAsync(request, cancellationToken);
}
}
यहाँ, आप इसे कैसे दर्ज किए जाएंगे:
protected void Application_Start(object sender, EventArgs e) {
var config = GlobalConfiguration.Configuration;
config.Routes.MapHttpRoute(
name: "CustomerOrdersHttpRoute",
routeTemplate: "api/customers/{customerKey}/orders/{key}",
defaults: new { controller = "CustomerOrders", key = RouteParameter.Optional },
constraints: null,
handler: new CustomerOrdersDispatcher(config)
);
config.MessageHandlers.Add(new SomeOtherHandler1());
config.MessageHandlers.Add(new SomeOtherHandler2());
}
SomeOtherHandler1
और SomeOtherHandler2
के बाद निष्पादित किया गया है, CustomerOrdersDispatcher
ग्राहकऑर्डर HttpRoute मार्ग के लिए निष्पादित किया जाएगा। इसलिए, आप देख सकते हैं कि आप डिफॉल्ट हैंडलर व्यवहार को सुरक्षित रखते हैं और कुछ वैश्विक हैंडलर सेट करते हैं जबकि आपके पास रूट विशिष्ट भी होता है।
यहां मेरे CustomerOrdersDispatcher
: https://github.com/tugberkugurlu/AdvancedWebAPI/blob/master/PerRouteMHOwnershipSample/Dispatcher/CustomerOrdersDispatcher.cs का पूर्ण कार्यान्वयन है।
आप यह कैसे काम करता है यह देखने के लिए और साथ ही पूर्ण नमूना आवेदन स्रोत कोड देख सकते हैं: https://github.com/tugberkugurlu/AdvancedWebAPI/tree/master/PerRouteMHOwnershipSample
लिंक, इसके वास्तव में आत्म व्याख्यात्मक के लिए धन्यवाद। – user1135534
@ किरण-चाल और निक, "विशेषता रूटिंग" के साथ समान कार्य कैसे करें? क्या यह भी संभव है? अंतिम वाक्य में –
मृत लिंक –