Frage

Ich habe vor kurzem Beta 2 von VS2010 heruntergeladen und gestartet mit ASP.NET MVC2 spielen. Anfängliche Entwicklung wurde mit Casini getan, aber jetzt wollte ich die Anwendung von IIS 7.5 (Ich bin mit Windows 7) laufen. Ich habe die Kompatiblität IIS6 Metabasis installiert und ich laufe VS2010 als Administrator, so kann ich den „Create Virtual Directory“ -Taste aus dem Register „Web“ der Projekteinstellungen verwenden. Damit wurde die Web-Anwendung Eintrag in IIS, aber es funktioniert nicht.

Wenn ich auf der Hauptseite ( http: // localhost / MyMvcApp / ) ich einen HTTP-Fehler 403 erhalten . Wenn ich direkt an eine der Unterseiten ( http: // localhost / MyMvcApp / Home / ) I erhalten eine HTTP-404.

Also ich aus irgendeinem Grunde denke, das URL-Routing funktioniert nicht. Ich habe bereits hinzugefügt UrlRouting als Modul und einen Handler zum web.config. In meinen Recherchen ist dies als eine Lösung für einige similair Probleme angeboten. Aber für mich ist dies immer noch nicht funktioniert.

Der interessante Teil meiner web.config looke wie folgt aus:

<system.web>
  <compilation debug="true" targetFramework="4.0">
    <assemblies>
      <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </assemblies>
  </compilation>
  <authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880" />
  </authentication>
  <membership>
    <providers>
      <clear />
      <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
    </providers>
  </membership>
  <profile>
    <providers>
      <clear />
      <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
    </providers>
  </profile>
  <roleManager enabled="false">
    <providers>
      <clear />
      <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
      <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
    </providers>
  </roleManager>
  <pages>
    <namespaces>
      <add namespace="System.Web.Mvc" />
      <add namespace="System.Web.Mvc.Ajax" />
      <add namespace="System.Web.Mvc.Html" />
      <add namespace="System.Web.Routing" />
    </namespaces>
  </pages>
  <httpHandlers>
    <add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler" />
  </httpHandlers>
  <customErrors mode="Off" />
</system.web>
<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <modules runAllManagedModulesForAllRequests="true" >
    <remove name="UrlRoutingModule"/>
    <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </modules>
  <handlers>
    <remove name="MvcHttpHandler" />
    <add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler" />
    <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </handlers>
  <httpErrors errorMode="Detailed" />
</system.webServer>
War es hilfreich?

Lösung 2

Nach mehr Kontrolle und versucht, bemerkte ich, in der „Windows-Funktionen ein- oder ausschalten“ Dialog, dass „HTTP-Fehler“ und „HTTP-Umleitung“ fehlten. Das ist seltsam, denn soweit ich dies automatisch von der Microsoft Web Platform Installer installiert wurde, erinnern kann. Auf jeden Fall „HTTP-Umleitung“ schien wie ein need-to-Have-Feature, wenn sie mit MVC arbeiten. So, nachdem ich es installiert, alles schien perfekt zu arbeiten.

Andere Tipps

Ich habe dieses Problem nur habe, und leider hier das Update nicht für mich arbeiten.

Was hat Arbeit lief folgendermaßen aus:

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir

in einem Befehlsfenster ... funktioniert wie ein Traum jetzt!

(So wird ASP.Net nicht standardmäßig in IIS installiert, wenn Sie VS2010 installieren?)

Fügen Sie diese auf Ihre web.config-Datei:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <!-- rest of config -->
</system.webServer>

Es ist so ein Schmerz dies manuell tun. Aber auf jeden Fall machbar ! Ich schaffte es und brachte es in diesem Schritt für Schritt Anleitung oben auf Hinzufügen eines mvc 2-Projekt zu einer exisitng Webformulare Lösung hier. Hoffe, das hilft ... es hat mir Alter obwohl alle Konfigurationseinstellungen zu arbeiten, und es scheint so wenige Ressourcen auf dem Thema zu sein.

Bitte beachten Sie, dass Sie aspnet_regiis.exe -ir als Administrator ausführen muss, wie es scheint offensichtlich, aber wenn Sie müde sind, Dinge zu versuchen, ohne Erfolg, zu lösen, könnten Sie es passieren.

Nur zu sagen, ein großes Dankeschön an alle Antworten, nach vielen Stunden verschiedene Dinge versuchen, endlich konnte ich meine MVC 2 app in IIS erhalten arbeiten.

Was mir geholfen wird mit klassischen Pipeline für AppPool statt integriert: alt text

Ich habe den Aufbau einer MVC2 Anwendung auf meinem Laptop Windows 7, .net Beta 2 verwenden und VS 2010 Beta 2. Wenn ich die gesamte Entwicklungsumgebung auf Windows Server 2008 installiert, einschließlich VS, baute die Lösung und es lief, das Routing hat gut funktioniert.

Der nächste Schritt war ein Produktionsserver auf Windows Server 2008 zu erstellen, auf dem ich die .net 4.0 beta, aber keiner von den anderen Sachen eingesetzt, die mit dem VS 2010 Beta-Download kam. Bei dieser Konfiguration des Routing noch nie gearbeitet, bis aktiviere ich HTTP-Umleitung wie Jeroen angegeben.

Hoffe, das hilft jemand, der im gleichen Boot sein könnte.

Ich wollte nur anmerken, dass ich war das gleiche Problem mit 403 und 404s, jedoch Hinzufügen der system.webServer und alle Elemente aus dem system.web/pages/namespaces Knoten es für mich gelöst.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top