IIS: как обслуживать файл без расширения?

Я использую IIS 8 на Windows 8.1. У меня есть файл XML, и мне нужно получить к нему доступ через (имя_сервера)/(путь)

(путь) предопределен кем-то другим и не содержит расширения. Я попробовал простое решение, удалив из файла .xml имя файла, но IIS returns HTTP Error 404.3 - Not Found

В "Физическом пути", возвращаемом с ошибкой, указан правильный путь к файлу, который при копировании и вставке в меню "Выполнить" открывает правильный файл.

Пожалуйста, дайте мне знать, если это возможно.


person xander    schedule 13.11.2013    source источник
comment
Будет ли одним из решений служить файл под (path)\index.html?   -  person mwfearnley    schedule 10.09.2018
comment
Странно, что ответ, получивший большое количество голосов, не был принят.   -  person Lex Li    schedule 16.09.2018


Ответы (3)


Предполагая, что (путь) — это физический каталог на вашем компьютере, создайте в этом каталоге новый файл web.config со следующим содержимым:

<?xml version="1.0" encoding="UTF-8"?>
 <configuration>
     <system.webServer>
         <staticContent>
             <mimeMap fileExtension="." mimeType="text/xml" />
         </staticContent>
     </system.webServer>
 </configuration>

Вы сообщаете IIS, что только для этого каталога любой файл без другого определенного расширения (в типах MIME) следует рассматривать как файл xml. Другие типы файлов по тому же пути должны по-прежнему работать.

Если у вас установлена ​​функция Windows IIS Management Scripts and Tools, вы можете использовать PowerShell для создания такого файла web.config:

Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/.well-known'  -filter "system.webServer/staticContent" -name "." -value @{fileExtension='.';mimeType='text/xml'}

в этом примере Default Web Site — это имя веб-сайта, а .well-known — это каталог на этом сайте.

person Peter Hahndorf    schedule 13.11.2013
comment
У меня fileExtension=".*" не сработало, а fileExtension="." сработало. - person rustyx; 04.03.2015
comment
Этот ответ помог мне настроить файл iOS Universal link apple-app-site-association для правильного обслуживания моего веб-сайта. Благодаря тонну! - person Nikhil Mathew; 14.10.2015
comment
@NikhilMathew, какой тип пантомимы вы использовали для сервера своего файла ассоциации сайта-приложения-яблока? Вышеупомянутое работает для меня, чтобы увидеть файл, но я не уверен, какой тип mime ожидает Apple. Я знаю, что это application/pkcs7-mime, если ваш файл зашифрован, но предположительно вам больше не нужно этого делать, поэтому я не уверен, какой тип использовать для моего незашифрованного файла. - person lehn0058; 22.10.2015
comment
Неважно, я вижу, что использование application/json работает :) - person lehn0058; 22.10.2015
comment
fileExtension="." это то, что сработало и для меня. ч/т @RustyX - person crthompson; 28.11.2016
comment
Отличный ответ. Это не сработало на IIS5 (я работаю над переносом устаревших приложений и наткнулся на одно!); но для этого решение @RBT сработало (только с использованием расширения файла . вместо .*, согласно другим комментариям здесь). - person JohnLBevan; 12.09.2017
comment
Этот ответ помог мне настроить Let's Encrypt SSL на общем хостинге Godaddy Plesk для Windows. - person JaYdipD; 15.07.2018
comment
Это <mimeMap fileExtension="." mimeType="text/xml" /> заставляет IIS на последнем сервере Windows выдавать ошибку. Это неправильный XML. Ему не нравится место в xml" />. - person Mike Makarov; 23.07.2018
comment
@MikeMakarov, вы должны уточнить, какой последний сервер Windows вы имеете в виду (1709 или Server 2019?). - person Lex Li; 16.09.2018
comment
@LexLi Сервер 2016, 1607 - person Mike Makarov; 17.09.2018
comment
Для ассоциации с сайтом-приложением Apple лучше использовать mimeType application/json , согласно gist.github.com/andrewrohn /774185e4e15ddcc14f0a1e3c66c943e3 - person Yair Zamir; 14.08.2019
comment
Тип Mime должен быть text/html, чтобы избежать строгих ошибок синтаксического анализа xml. - person Shadi Namrouti; 05.12.2019
comment
Спасибо, у меня сработало решение web.config, для файла ассоциации Apple-App-Site-Association я использовал тип MIME как application/json - person Rishabh Tailor; 01.06.2021

Это также можно сделать в IIS 6 / без использования web.config, но вместо этого с помощью графического интерфейса управления добавить тип MIME для расширения . здесь:

введите описание изображения здесь

Например, чтобы обслуживать токен .well-known/acme-challenge, создайте виртуальный каталог с именем .well-known и пусть он берет свое содержимое из физического каталога (который не может иметь имена с точками в начале в окнах). Затем добавьте тип MIME text/plain для расширения . в этот каталог, и вы сможете вручную получить новые сертификаты letsencrypt для домена, который в настоящее время обслуживается старым IIS.

person MattBianco    schedule 02.12.2015
comment
вы можете иметь . в начале каталога в Windows просто создайте каталог с именем .well-known. (проводник удалит последнюю точку, и у вас останется .well-known) - person Peter; 26.01.2016
comment
Раздел «Типы Mime» в IIS 7+ также позволит вам сделать это. Щелкните правой кнопкой мыши, добавьте расширение . (просто точка) с типом mime text/plain (для acme-challenge) или text/xml (для xml). - person crthompson; 28.11.2016
comment
Спасибо! это был мой точный вариант использования и необходимость. ты чемпион! - person user319862; 01.08.2020

Изменение конфигураций вручную иногда может быть рискованным. IIS предоставляет методологию обновления MIME-типов через диспетчер IIS, как показано ниже. Снимки предназначены для IIS v10, установленных в окне Windows 10:

  1. Перейдите к функции MIME Types виртуального каталога вашего сайта:

введите описание изображения здесь

  1. Настройте тип mime для поддержки всех файлов без расширения:

введите описание изображения здесь

Эти шаги эффективно сохраняют изменения в web.config вашего веб-сайта или виртуального каталога (под вашим веб-сайтом), как это было предложено @PeterHahndorf в его post.

person RBT    schedule 30.05.2017
comment
Цитируя RustyX: у меня fileExtension=.* не работал, но fileExtension=. работал. - person Ahmet Noyan Kızıltan; 01.06.2017
comment
в порядке. Учитывая количество голосов за комментарий @RustyX, я уверен, что это именно тот случай, который вы наблюдали. Одним из намерений моего сообщения было также познакомить читателей с тем, как добиться этого изменения через пользовательский интерфейс диспетчера IIS, вместо того, чтобы напрямую играть с файлами конфигурации. - person RBT; 01.06.2017