Я написал действие контроллера, которое проверяет наличие файла PDF, а затем возвращает файл (если он найден) в браузер для загрузки.
public ActionResult GetMyFile(string path)
{
if (String.IsNullOrWhiteSpace(path)) { throw new ArgumentNullException("filename"); }
string downloadFileName = System.IO.Path.GetFileName(path);
// The worker process identity must have read access in both the file system and share
// otherwise this always returns false.
if (System.IO.File.Exists(path))
{
FilePathResult result =
File(path, System.Net.Mime.MediaTypeNames.Application.Pdf, downloadFileName);
return result;
}
return Content("no file", "text-plain");
}
Все работает нормально, если путьПараметр ссылается на локальный путь на диске (например, "D:\MyFolder\MyFile.pdf"
), но когда путь является путем UNC, файл PDF возвращается, но отображается в браузере как обычный текст.
Вот фрагмент этоговыглядит как ...
% PDF-1.3 1 0 obj << / длина 1409 / Filter / FlateDecode> поток X��� I�%&/m�{J�J��t��
$ ؐ @ ������� iG#) * ЕВА] е @ 흼 {{;?!? N '\ fdlJɞ ~ | "~ Q«IwOw: O 'дг | г / PtӃ:} Çк} 7q /> O> _9 g������Y���
|! {р ??����ܿ O����s�> ��� 'ڜ H������; ��D��> �� ���? ��? J��t�m��тСО (Ih ~ H7JLǎK% * 1012 T1 *. S = .F # wwzwǟҴ ~ х ~ Px | 3jc) f1 ��O�1�4�����b�qN̔>������跟j�jB?��݃ ����c��.���ڀ�^ofq�,�Pp���g��=Oo�
��7�}��פ�> ��m)}�~�W!�w��Q�0SR�3���2-���&-��Fhy�S�]���HiyF_���
�4�;Q��l�f��|]>ۍ�hc��C��64���|L�4�9Pξ�{#-�?��|���=1Tl��O�����݂6�����a֡�.fe:�����/��1��#�{���������?��|v��}�4�}Cw��!�
& zv4Uj0 & - xiģ | =L9LnI7� & + �gʃ�; ��U� m�� M��.� ޏ� D�QvT��ϯ���f��� (��������0�������� {_������ui�Rid�6���u��a�� x"��m��{�o$���
� ����.��� enj@xu�8ӮR�����Ύ�r�� {�m�� $ ��O ��v���� = �������X! ~, E, �P����mf�2% 9 {��m����֍ b���8���ñ��: �PE��O <�e ~ jƄ� ߨ���? � Z��� <code>����"�Ǟ:����D��N�ߌ����PL��0��U����F4 g�oPW�Ml��#"�~ラ���_�����뾯���?���mG o������� = �bwGr/ б? t3 (т = [\ O + cresu0, Г.Ф.Qo\ S7q̘܀ ,. Wn $ Wm% 2ymdI <͑UeVA- | D ڵ дза /]J | ݾ '$ \ WR> л |.% agj0 |! {Rc ЛЖИ S?�� ^ SE����z��3�����hr� {��R "C� ݅ o��Ac� * T��Q��IE�6XP5ˮ�j4k��v� D��-�� endstream
Есть мысли о том, почему это может происходить?
Моя среда - это приложение ASP.NET MVC 3, работающее в IIS на Windows7. Клиент - Internet Explorer 9 RC, работающий на той же машине.
Путь UNC является общей папкой на той же машине, что и веб-сервер, и является тем же физическим местоположением, которое использовалось в «тесте локального пути»."(что успешно).
Для разрешений я гарантировал, что удостоверение рабочего процесса для моего пула приложений имеет разрешения Read как в файловой системе, так и через общий ресурс.