Я использую IIS 6 на Windows 2003 Server и пытаюсь установить на эту машину проект MVC2. У меня проблемы с кошмарами при этом!
Я посмотрел тонны ссылок на то, что делать, а не 1 единственный работает. (Они работают для проектов MVC1, так как некоторые из них уже используют упомянутые решения).
Есть ли у кого-нибудь какие-либо советы / подсказки / идеи относительно того, что необходимо сделать для проектов MVC2 с IIS 6? Я определенно тяну волосы за это.
Я пробовал это на 2 моих серверах разработки, и оба получили одинаковый результат. Самая близкая к доступной странице я могу получить страницу с ошибкой «Ссылка на объект не установлена на экземпляр объекта», однако на странице есть блоки try / catch, которые игнорируются, поэтому я не думаю, что она выполняет код на контроллер, я думаю, это говорит о том, что контроллер является ошибкой. (Для справки, рассматриваемая ошибка направлена в файл HomeController.cs).
Что я пробовал:
- Подстановочный знак
- Изменение маршрутов на {controller} .mvc
- Изменение маршрутов на {controller} .aspx
- Добавление расширения .mvc в IIS
- Изменение маршрутов в Global.asax
Пока в этом проекте много кода, поэтому я опубликую только первые страницы, которые должны быть обслужены:
ОСНОВНАЯ СТРАНИЦА:
<div class="page">
<div id="header">
<div id="title">
<h1>Meritain RedCard Interface 2.0</h1>
</div>
<!--
This is the main menu. Each security role will have access to certain buttons.
-->
<div id="menucontainer">
<% if (Session["UserData"] != null)
{ %>
<% if (/*User Security Checks Out*/)
{ %>
<ul id="menu">
<li><%= Html.ActionLink("Home", "Index", "Home")%></li>
<li><%= Html.ActionLink("Selection", "Index", "Select", new { area = "Selector" }, null)%></li>
<li><%= Html.ActionLink("Audit", "Index", "Audit", new { area = "Auditor" }, null)%></li>
<li><%= Html.ActionLink("Setup", "Index", "Setup", new { area = "Setup" }, null)%></li>
<li><%= Html.ActionLink("About", "About", "Home")%></li>
</ul>
<% } %>
<% } %>
</div>
</div>
<div id="main">
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
<div id="footer">
</div>
</div>
</div>
Default.aspx.cs: [я добавил этот файл в качестве потенциального решения, так как он работает с MVC 1]
protected void Page_Load(object sender, EventArgs e)
{
string originalPath = Request.Path;
HttpContext.Current.RewritePath(Request.ApplicationPath, false);
IHttpHandler httpHandler = new MvcHttpHandler();
httpHandler.ProcessRequest(HttpContext.Current);
HttpContext.Current.RewritePath(originalPath, false);
}
HomeController.cs:
public ActionResult Index()
{
loadApplication();
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
private void loadApplication()
{
Session["UserData"] =
CreateUserSecurity(HttpContext.User.Identity.Name.ToString());
}
Я не перечислил метод CreateUserSecurity, но все, что он делает, это вызывает БД с использованием имени пользователя и возвращает запись в базе данных, которая соответствует имени пользователя.
РЕДАКТИРОВАТЬ: Добавлен код и то, что я пробовал до сих пор (в соответствии с просьбой).