#c# #asp.net-mvc #asp.net-mvc-routing #url-routing
#c# #asp.net-mvc #asp.net-mvc-routing #url-маршрутизация
Вопрос:
Мне нужно маршрутизировать метод контроллера MVC как сценарий вызова js.
Разделили библиотеку классов с контроллером:
[RouteArea("cms")]
public class ContentController : Controller
{
[Route("cmslibrary.js", Name = "cmslib")]
public ActionResult GetCMSJsLibrary()
{
return new ContentResult()
{
Content = //<content of JS file goes yjere>
}
}
}
И где-то в поле зрения внутри веб-проекта ASP.MVC:
@Scripts.Render(Url.RouteUrl("cmslib"))
И это отображает:
/cms/cmslibrary.js
НО: он возвращает ошибку 404 NotFound. Но если вы попытаетесь
/cms/cmslibrary.js/
все будет работать правильно.
Вероятно, ядро MVC проверяет, существует ли файл физически, и поэтому iis возвращает ошибку 404.
Пожалуйста, помогите.
Комментарии:
1. Может быть проблема с веб-сервером. Обрабатываются ли
.js
файлы .NET?2. просто удалите ‘.js’ из имени вашего маршрута. браузеры не заботятся о расширениях, они заботятся только о заголовке типа содержимого, который вы отправляете
3. Модуль обработки файлов IIS попытается разрешить этот URL-адрес еще до того, как он попадет в MVC. Вы могли бы попробовать добавить
<modules runAllManagedModulesForAllRequests="true" />
вweb.config<system.webServer>
,AttributeRouting
тогда вы сможете получить этот URL-адрес и выполнить запрос. В противном случае решение @RobertLevy — это правильный путь4. вы также можете определить то же самое в RoutingCOnfig