2010-04-08 3 views
1

J'utilise IIS 6 sur un serveur Windows 2003 et j'essaie d'obtenir un projet MVC2 installé sur cette machine. Je fais des problèmes cauchemardesques! J'ai cherché des tonnes de références sur ce qu'il faut faire, et pas une seule ne fonctionne. (Ils travaillent pour des projets MVC1, car j'ai quelques-uns de ceux qui utilisent déjà ces solutions).Problèmes MVC 2 avec IIS 6

Est-ce que quelqu'un a des conseils/astuces/idées sur ce qui doit être fait pour les projets MVC2 avec IIS 6? Je suis définitivement en train d'arracher mes cheveux.

Je l'ai essayé sur 2 de mes serveurs de développement, et les deux obtiennent le même résultat. Le plus proche que je peux obtenir à une page servie est une page d'erreur "Référence d'objet non définie à une instance d'un objet", cependant, la page a des blocs try/catch qui sont ignorés, donc je ne pense pas qu'il exécute le code sur contrôleur, je pense qu'il dit que le contrôleur est l'erreur. (Pour la référence, l'erreur en question est dirigée vers le fichier HomeController.cs).

Ce que j'ai essayé:

  • cartographie Wildcard
  • Modification de routes à {} contrôleur .mvc
  • Modification des itinéraires de {contrôleur} .ASPX
  • Ajout de l'extension .mvc à IIS
  • routes dans Global.asax Modification

Il y a LOT de code dans ce projet jusqu'à présent, donc je ne vais poster la première page (s) qui devraient être servis:

MASTER PAGE:

<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: [I ajouté ce fichier comme une solution potentielle, car il fonctionne avec 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()); 
} 

Je n'ai pas la liste La méthode CreateUserSecurity, mais tout ce qu'il fait appelle la base de données en utilisant le nom d'utilisateur et retourne l'enregistrement dans la base de données qui correspond au nom d'utilisateur.

EDIT: code ajouté et ce que j'ai essayé jusqu'à présent (comme demandé).

+0

Y a-t-il quelque chose dans le journal des événements qui pourrait être utile? – mmacaulay

+0

@mmacaulay - Absolument rien enregistré dans le journal des événements. – SlackerCoder

+0

Veuillez mettre ce que vous avez essayé dans votre question, ainsi que le code que vous utilisez. –

Répondre

1

J'ai suivi cette promenade à travers la mise en place sur IIS 6.0 sur WIN2K3 et il a très bien fonctionné:

http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

Si constaté que l'exécutant localement via le serveur de développement ASP.NET était très bien. Je n'ai pas essayé de configurer l'application sur mon installation locale d'IIS.

+0

C'est l'un des "tutoriels" que j'ai suivis. C'était le gagnant qui a réellement travaillé. Je pense que quelques-uns des autres auraient fonctionné aussi, mais étant donné que je ne pourrais pas obtenir n'importe quel travail sur mon système jusqu'à ce que j'ai effacé le cache, etc., je ne pourrais jamais obtenir n'importe quoi aller! – SlackerCoder

1

En fin de compte, une de ces astuces a fonctionné! (Ajout de l'extension .mvc à IIS). Cela n'a juste pas fonctionné pour ma machine. Quand j'ai demandé à quelqu'un d'autre d'essayer le site (en se connectant au serveur), il l'a très bien servi. Une fois que j'ai effacé mon cache/cookies/etc il semble fonctionner. Je ne peux toujours pas le faire fonctionner directement sur le serveur (dans IIS ou autre), mais c'est très bien car il ne sera jamais exécuté à partir du serveur lui-même.

2

S'il s'agit de asp.net mvc 2 dans .NET 4.0, assurez-vous de l'autoriser sous extensions de site Web.