Как исправить: объект должен быть массивом примитивов. Имя параметра: src - PullRequest
2 голосов
/ 21 марта 2012

Я получаю массу сообщений об этих ошибках, когда пользователь пытается загрузить pdf из моего веб-приложения:

    System.ArgumentException: Object must be an array of primitives. 
Parameter name: src 
at System.Buffer.BlockCopy(Array src, Int32 srcOffset, Array dst, Int32 dstOffset, Int32 count) 
at System.Web.StaticFileHandler.ProcessRangeRequest(HttpContext context, String physicalPath, Int64 fileLength, String rangeHeader, String etag, DateTime lastModified) 
at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context) 
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

Я уже посмотрел на http://support.microsoft.com/kb/2026272 и попробовал пункт 3 (в этом случае другие предложения не являются реально осуществимыми решениями), но это не решает проблему.

Другое предложение, которое я видел в другом месте, заключалось в том, чтобы добавить следующее к методу Application_PostRequestHandlerExecute в Global.asax:

HttpApplication app = (HttpApplication)sender;

if(app.Context.Request.RawUrl.Contains(".pdf"))
    app.Response.AppendHeader("Accept-Ranges", "none");

Но опять же, похоже, это не решает проблему.

Любые мысли приветствуются ...

1 Ответ

1 голос
/ 21 марта 2012

Проблема вызвана самой платформой .Net.Похоже, что существует общая проблема, когда вызов StaticFileHandler в Buffer.BlockCopy не обрабатывает файлы PDF должным образом.Единственное решение, которое я нашел в другом месте и которое я могу придумать, это написать свой собственный обработчик файлов, который не использует Buffer.BlockCopy.

Вот ссылка на реализацию обработчика http, чтобы исправить этоточная ситуация: http://forums.asp.net/t/1471292.aspx/1

Вы также можете следовать руководству Microsoft по созданию обработчика http и настроить образец в соответствии с файлами PDF: http://msdn.microsoft.com/en-us/library/ms972953.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...