ASP.MVC как маршрутизировать метод как библиотеку javasctipt

#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