URL-маршрутизация, переписать путь, но оставить mimetype - PullRequest
1 голос
/ 19 февраля 2010

Я реализовал свой собственный IRouteHandler для маршрутизации URL.
Для файлов без расширения он попытается загрузить имя файла как страницу из каталога страниц с помощью:

return (IHttpHandler) BuildManager.CreateInstanceFromVirtualPath(path, typeof(Page));

Однако существуют также изображения и файлы CSS (с относительными путями), которые необходимо перевести на правильный URL-адрес. Я пытаюсь обслужить эти файлы с помощью:

try {
   HttpContext.Current.Server.Transfer(fileName);
} catch (HttpException) {
   throw new HttpException(404, "file not found");
}

Это прекрасно работает (в Internet Explorer), однако Firefox выдает мне ошибку:

Styles.css не был загружен, потому что его MIME-тип "text / html" не является "Текст / CSS".

Это вызвано Server.Transfer?
Что я должен использовать, чтобы перенаправить файл? Response.Redirect виден клиенту.

1 Ответ

0 голосов
/ 20 февраля 2010

Я нашел решение, .NET 3.5 и IIS7 представили новый метод: Server.TransferRequest.

С помощью метода TransferRequest запрос отправляется обратно через конвейер IIS.http://msdn.microsoft.com/en-us/library/aa344902.aspx

Firefox снова с радостью принимает мои CSS-файлы.

...