आप application/x-www-form-urlencoded
या multipart/form-data
का उपयोग कर रहे हैं, तो आप सुरक्षित रूप से के रूप में यह आगामी कॉल पर एक कैश्ड उदाहरण देता context.Request.ReadFormAsync()
कई बार फोन कर सकते हैं।
यदि आप एक अलग सामग्री प्रकार का उपयोग कर रहे हैं, तो आपको अनुरोध को मैन्युअल रूप से बफर करना होगा और अनुरोध निकाय को MemoryStream
जैसे रिवाइंडेबल स्ट्रीम द्वारा प्रतिस्थापित करना होगा। यहां आपके द्वारा किसी इनलाइन मिडलवेयर का उपयोग कर सकता है (यदि आप अपने पाइप लाइन में जल्द ही यह रजिस्टर करने की आवश्यकता):
app.Use(next => async context => {
// Keep the original stream in a separate
// variable to restore it later if necessary.
var stream = context.Request.Body;
// Optimization: don't buffer the request if
// there was no stream or if it is rewindable.
if (stream == Stream.Null || stream.CanSeek) {
await next(context);
return;
}
try {
using (var buffer = new MemoryStream()) {
// Copy the request stream to the memory stream.
await stream.CopyToAsync(buffer);
// Rewind the memory stream.
buffer.Position = 0L;
// Replace the request stream by the memory stream.
context.Request.Body = buffer;
// Invoke the rest of the pipeline.
await next(context);
}
}
finally {
// Restore the original stream.
context.Request.Body = stream;
}
});
तुम भी BufferingHelper.EnableRewind()
विस्तार है, जो Microsoft.AspNet.Http
पैकेज का हिस्सा है का उपयोग कर सकते हैं: यह एक समान दृष्टिकोण पर आधारित है FYI करें
app.Use(next => context => {
context.Request.EnableRewind();
return next(context);
});
: लेकिन एक विशेष धारा है कि स्मृति में बफरिंग डेटा शुरू होता है और डिस्क पर एक अस्थायी फ़ाइल के लिए सब कुछ spools पर निर्भर करता है जब सीमा तक पहुंचने पर एक बफरिंग मिडलवेयर शायद भविष्य में vNext में जोड़ दिया जाएगा।
बस उत्सुक पुन: पढ़ने: तुम क्यों जब प्रमाणीकरण प्रदर्शन अनुरोध के शरीर पढ़ रहे हैं? –
यह एक एपीआई है जहां उदाहरण के लिए अनुरोध अनुरोध को सुरक्षित करने के लिए एपीकी की भी आवश्यकता है और अनुरोध को सुरक्षित करने के लिए हैश भी है। जो शीर्षकों में होने का अर्थ नहीं है। –
एक [उदाहरण] (http://stackoverflow.com/questions/42561350/read-json-post-data-in-asp-net-core-mvc/42922579#42922579) पिनपॉइंट के सक्षम रिवाइंड का उपयोग करने से शरीर से जेसन पढ़ने के लिए। –