Настройка домашней страницы в 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".
Я был слишком занят, чтобы заметить, что после устранения проблем, связанных со всеми необходимыми настройками, я забыл удостовериться, что я сбросил все свои тесты при переименовании элемента управления из индекса в дом и мое представление из значения по умолчанию в индекс или около того в коде выше, только когда я добавил редактирование. Я в последний раз посмотрел, чтобы убедиться, но оказалось, что это была моя ошибка, поэтому я оставляю это для дальнейшего использования, чтобы другие могли учиться на этой ошибке.