2016-08-01 17 views
12

में अपलोड फ़ाइल आकार बढ़ाएं वर्तमान में, मैं Asp.Net Core और MVC6 के साथ काम कर रहा हूं फ़ाइल आकार असीमित अपलोड करने की आवश्यकता है। मैंने अपने समाधान की खोज की है लेकिन अभी भी वास्तविक जवाब नहीं मिला है।Asp.Net कोर

I have tried this link

अगर कोई किसी भी विचार मदद कृपया है।

धन्यवाद।

उत्तर

14

जब आप 30 एमबी से अधिक फ़ाइल अपलोड करते हैं तो आपको शायद 404.13 HTTP स्टेटस कोड मिल रहा है। यदि आप आईआईएस में अपना एएसपी.Net कोर एप्लिकेशन चला रहे हैं, तो आईआईएस पाइपलाइन आपके आवेदन को हिट करने से पहले आपके अनुरोध को रोक रही है। अपने web.config

अद्यतन:

<system.webServer> 
    <handlers> 
     <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/> 
    </handlers> 
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/> 
    <!-- Add this section for file size... --> 
    <security> 
     <requestFiltering> 
     <!-- Measured in Bytes --> 
     <requestLimits maxAllowedContentLength="1073741824" /> <!-- 1 GB--> 
     </requestFiltering> 
    </security> 
    </system.webServer> 

पिछला ASP.Net आवेदन भी इस खंड की जरूरत है, लेकिन यह कोर में अब कोई आवश्यकता नहीं है के रूप में आपके अनुरोध मिडलवेयर द्वारा नियंत्रित किया जाता है:

<system.web> 
    <!-- Measured in kilobytes --> 
    <httpRuntime maxRequestLength="1048576" /> 
    </system.web> 
+0

आप शायद 30MB मतलब, – jao

12

में एएसपी.NET कोर 1.1 प्रोजेक्ट जो विजुअल स्टूडियो 2017 द्वारा क्रेट किया गया है, यदि आप अपलोड फ़ाइल आकार को बढ़ाना चाहते हैं। आप खुद web.config फ़ाइल बनाने के लिए, और जोड़ने के इन सामग्री की जरूरत है:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer> 
    <security> 
     <requestFiltering> 
     <!-- 1 GB --> 
     <requestLimits maxAllowedContentLength="1073741824" /> 
     </requestFiltering> 
    </security> 
    </system.webServer> 
</configuration> 

Startup.cs फ़ाइल में, इन सामग्री जोड़ने:

public void ConfigureServices(IServiceCollection services) 
{ 
    services.Configure<FormOptions>(x => 
    { 
     x.ValueLengthLimit = int.MaxValue; 
     x.MultipartBodyLengthLimit = int.MaxValue; 
     x.MultipartHeadersLengthLimit = int.MaxValue; 
    }); 

    services.AddMvc(); 
} 
+1

web.config सामग्री आप सूची सही नहीं हैं GB नहीं; आपको के लिए एक और बंद टैग चाहिए, और टैग को टैग के अंदर रखा जाना चाहिए, जो बदले में <कॉन्फ़िगरेशन> टैग के अंदर होना चाहिए। यदि नहीं, तो आपको HTTP 500 त्रुटि प्राप्त होगी। –

19

अन्य उत्तर आईआईएस प्रतिबंध का समाधान। हालांकि, एएसपी.नेट कोर 2.0 के रूप में, केस्ट्रल सर्वर भी अपनी डिफ़ॉल्ट सीमा लगाता है।

Github of KestrelServerLimits.cs

Announcement of request body size limit and solution (quoted below)

MVC निर्देश

आप एक विशिष्ट MVC कार्रवाई या नियंत्रक के लिए अधिकतम अनुरोध शरीर आकार की सीमा में परिवर्तन करना चाहते हैं, तो आप RequestSizeLimit विशेषता का उपयोग कर सकते हैं। निम्नलिखित 100,000,000 बाइट तक अनुरोध निकायों को स्वीकार करने के लिए MyAction की अनुमति होगी।

[HttpPost] 
[RequestSizeLimit(100_000_000)] 
public IActionResult MyAction([FromBody] MyViewModel data) 
{ 

[DisableRequestSizeLimit] अनुरोध आकार असीमित बनाने के लिए उपयोग किया जा सकता है। यह केवल जिम्मेदार कार्रवाई या नियंत्रक के लिए पूर्व-2.0.0 व्यवहार को प्रभावी ढंग से पुनर्स्थापित करता है।

जेनेरिक मिडिलवेयर निर्देश

अनुरोध एक MVC कार्रवाई द्वारा नियंत्रित नहीं किया जा रहा है, तो सीमा अभी भी एक अनुरोध के अनुसार आधार IHttpMaxRequestBodySizeFeature के प्रयोग पर संशोधित किया जा सकता। उदाहरण के लिए:

app.Run(async context => 
{ 
    context.Features.Get<IHttpMaxRequestBodySizeFeature>().MaxRequestBodySize = 100_000_000; 

MaxRequestBodySize एक शून्य लंबा है। इसे शून्य पर सेट करना एमवीसी के [DisableRequestSizeLimit] जैसी सीमा को अक्षम करता है।

यदि आवेदन अभी तक पढ़ना शुरू नहीं हुआ है तो आप केवल अनुरोध पर सीमा को कॉन्फ़िगर कर सकते हैं; अन्यथा एक अपवाद फेंक दिया जाता है।IsReadOnly संपत्ति है जो आपको बताती है कि MaxRequestBodySize संपत्ति केवल पढ़ने योग्य राज्य में है, जिसका अर्थ है कि सीमा को कॉन्फ़िगर करने में बहुत देर हो चुकी है।

वैश्विक कॉन्फ़िग निर्देश

आप विश्व स्तर पर अधिकतम अनुरोध शरीर के आकार को संशोधित करना चाहते हैं, तो यह या तो UseKestrel या UseHttpSys के कॉलबैक में एक MaxRequestBodySize संपत्ति को संशोधित करके किया जा सकता है। MaxRequestBodySize दोनों मामलों में एक नामुमकिन लंबा है। उदाहरण के लिए:

.UseKestrel(options => 
{ 
    options.Limits.MaxRequestBodySize = null; 

या

.UseHttpSys(options => 
{ 
    options.MaxRequestBodySize = 100_000_000;