पाइपलाइन के कौन से हिस्से खो गए हैं?
अनुरोध पाइपलाइन में से कोई भी निष्पादित नहीं किया गया है:
myRequestService.Any(e.Request);
केवल भौतिक रूप से Any
का उपयोग कर रहा है आपके MyRequestService
. की C# विधि वर्ग, यह कुछ और नहीं करता (न ही नहीं कर सकता)।
सेवा अनुरोध के दौरान अन्य सेवाओं को लागू करने का अनुशंसित तरीका सर्विस गेटवे का उपयोग करना है।
लेकिन अगर आप किसी HTTP अनुरोध के बाहर किसी सेवा का आह्वान करना चाहते हैं, तो आप गैर-विश्वसनीय सेवाओं को निष्पादित करने के लिए RPC गेटवे का उपयोग कर सकते हैं क्योंकि यह पूर्ण अनुरोध पाइपलाइन को आमंत्रित करता है और HTTP त्रुटि प्रतिक्रियाओं को टाइप की गई त्रुटि प्रतिक्रियाओं में परिवर्तित करता है:
HostContext.AppHost.RpcGateway.ExecuteAsync()
सेवा अनुरोध के बाहर आंतरिक/विश्वसनीय सेवाओं को निष्पादित करने के लिए आप HostContext.AppHost.ExecuteMessage का उपयोग कर सकते हैं जैसा कि ServiceStack MQ द्वारा उपयोग किया जाता है जो संदेश अनुरोध अनुरोध / प्रतिक्रिया फ़िल्टर, सेवा कार्रवाई फ़िल्टर और ईवेंट लागू करता है।
<ब्लॉकक्वॉट>मैंने कंटेनर के साथ पंजीकरण किया है। AddScoped
HTTP अनुरोध के बाहर अनुरोध स्कोप्ड निर्भरता का उपयोग न करें, सिंगलटन का उपयोग करें यदि निर्भरता थ्रेडसेफ हैं, अन्यथा उन्हें क्षणिक के रूप में पंजीकृत करें। यदि आपको प्रति-अनुरोध संग्रहण पास करने की आवश्यकता है तो उन्हें IRequest.Items
. में पास करें ।