Настройка домашней страницы в IIS для веб-сайта / приложения mvc4 (без форм no.aspx)

Как это случилось у меня был долгий день, чтобы решить проблемы с настройками, и теперь, когда я настроен с mvc4 (перенесено из WebForms) и vs2010 .

после развертывания в IIS(7 v7.5) я не смог загрузить проект, пока не указал полный путь к представлению. помимо размещения статической страницы HTML или ASPX

как можно сделать его перенаправить на [MyFirstControl]/[MyFirstView]

это пропускает хозяина? это проблема между выбором веб-сайта и веб-приложения?

Я подключил свой Ip к имени домена, открыл порты в FW для iis, и все, что я хочу, - это иметь возможность войти в сайт / приложение через его доменное имя, а не набирать в представлении управления +. так что мне нужно сделать?

Кстати, я использую базовый шаблон, так как я хочу минимальный объем кода и является ли это веб-сайтом по определению или веб-приложением, действительно ли это имеет значение как программист в.NET, ни один веб-сайт не является веб-сайтом, а является приложением, поскольку вы никогда не просто помещаете HTML, но бизнес-уровень и БД.. но я не понимаю различий в именах / терминах

редактировать

я долго гуглил, пытаясь понять правильно

 <modules>
      <remove name="UrlRoutingModule-4.0" />
      <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
    </modules>
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>


public static void RegisterRoutes(RouteCollection routes)
{
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
 }

2 ответа

Решение

Вы зарегистрировали только один маршрут (по умолчанию, который создается в новом проекте MVC):

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

defaults Аргумент предоставляет значения по умолчанию, когда в URL нет действия или нет контроллера. Поэтому при переходе в корень (/) тогда Index действие выполняется на HomeController,

Видимо, нужен рут (/) указать на MyFirstView действие на MyFirstControl контроллер, так что в принципе вы просто должны изменить значение defaults аргумент. Тем не менее, ваш класс контроллера заканчивается Control но MVC ожидает, что это закончится Controller так что вы должны переименовать класс контроллера в MyFirstController и затем настройте этот маршрут по умолчанию:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "MyFirst", action = "MyFirstView", id = UrlParameter.Optional }
);

Кроме того, используя View в названии действия несколько сбивает с толку.

Маршрутизация в ASP.NET является очень важной концепцией, и вы можете узнать о ней больше, прочитав статью " Маршрутизация ASP.NET".

Я был слишком занят, чтобы заметить, что после устранения проблем, связанных со всеми необходимыми настройками, я забыл удостовериться, что я сбросил все свои тесты при переименовании элемента управления из индекса в дом и мое представление из значения по умолчанию в индекс или около того в коде выше, только когда я добавил редактирование. Я в последний раз посмотрел, чтобы убедиться, но оказалось, что это была моя ошибка, поэтому я оставляю это для дальнейшего использования, чтобы другие могли учиться на этой ошибке.

Другие вопросы по тегам