मुझे डब्ल्यूसीएफ वेब एपीआई के साथ वास्तविक समस्या है।फ़ाइल अपलोड करने में त्रुटि WCF WEB API (पूर्वावलोकन 6): कॉन्फ़िगर किए गए अधिकतम बफर आकार की तुलना में बफर में अधिक बाइट्स नहीं लिख सकता: 65536
मेरे पास एक साधारण विधि है जो फ़ाइल अपलोड करती है और डिस्क पर सहेजती है। ऐसा लगता है कि मैंने सभी सही पैरा सेट किए हैं, लेकिन जब मैं 2 एमबी फ़ाइल अपलोड करने का प्रयास करता हूं तो उपरोक्त त्रुटि संदेश प्राप्त करें।
सर्वर कोड:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
HttpServiceHostFactory _factory = new HttpServiceHostFactory();
var config = new HttpConfiguration()
{
EnableTestClient = true,
IncludeExceptionDetail = true,
TransferMode = System.ServiceModel.TransferMode.Streamed,
MaxReceivedMessageSize = 4194304,
MaxBufferSize = 4194304
};
_factory.Configuration = config;
RouteTable.Routes.Add(new ServiceRoute("api/docmanage", _factory, typeof(WorksiteManagerApi)));
}
ग्राहक:
HttpClientHandler httpClientHandler = new HttpClientHandler();
httpClientHandler.MaxRequestContentBufferSize = 4194304;
var byteArray =
Encoding.ASCII.GetBytes(ConnectionSettings.WebUsername + ":" + ConnectionSettings.WebPassword);
HttpClient httpClient = new HttpClient(httpClientHandler);
httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
httpClient.BaseAddress = new Uri(ConnectionSettings.WebApiBaseUrl);
httpClient.MaxResponseContentBufferSize = 4194304;
...
multipartFormDataContent.Add(new FormUrlEncodedContent(formValues));
multipartFormDataContent.Add(byteArrayContent);
var postTask = httpClient.PostAsync("api/docmanage/UploadFile", multipartFormDataContent);
फिर, सर्वर पर:
[WebInvoke(Method = "POST")]
public HttpResponseMessage UploadFile(HttpRequestMessage request)
{
// Verify that this is an HTML Form file upload request
if (!request.Content.IsMimeMultipartContent("form-data"))
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
// Create a stream provider for setting up output streams
MultipartFormDataStreamProvider streamProvider = new MultipartFormDataStreamProvider();
// Read the MIME multipart content using the stream provider we just created.
IEnumerable<HttpContent> bodyparts = request.Content.ReadAsMultipart(streamProvider);
foreach (var part in bodyparts)
{
switch (part.Headers.ContentType.MediaType)
{
case "application/octet-stream":
if (part.Headers.ContentLength.HasValue)
{
// BLOWS UP HERE:
var byteArray = part.ReadAsByteArrayAsync().Result;
if (null == fileName)
{
throw new HttpResponseException(HttpStatusCode.NotAcceptable);
}
else
{
uniqueFileId = Guid.NewGuid().ToString();
string tempFilename = Path.GetTempPath() + @"\" + uniqueFileId + fileName;
using (FileStream fileStream = File.Create(tempFilename, byteArray.Length))
{
fileStream.Write(byteArray, 0, byteArray.Length);
}
}
}
break;
}
}
}
कोई भी विचार? मैं वेब एपीआई के नवीनतम पूर्वावलोकन का उपयोग कर रहा हूं .... मैंने देखा कि समर्थन दस्तावेज से बहुत कुछ गुम है लेकिन ऐसा लगता है कि कुछ बफर सीमा है जो मुझे नहीं पता कि कैसे निर्दिष्ट किया जा सकता है या अनदेखा किया जा रहा है .... ।
कोड पोस्ट करते समय कृपया सुनिश्चित करें कि इसे यथासंभव पठनीय के रूप में स्वरूपित किया गया है। लोगों को बुरी तरह से स्वरूपित नमूने के माध्यम से अपना समय बिताने के लिए कहना मुश्किल है। –
क्या आपके पास सर्वर और क्लाइंट पर कोई कॉन्फ़िगर प्रविष्टियां हैं? यदि ऐसा है तो क्या आप उन्हें भी पोस्ट कर सकते हैं – Rajesh
केवल कोड के लिए सभी कॉन्फ़िगरेशन छोड़ दिया ... आप निर्माण (और क्लाइंट पर) पर सेवा में पारित कॉन्फ़िगर पैराम देख सकते हैं .... –