2010-01-12 7 views
8

Ich versuche, ein kleines ASP.NET-Projekt in einem Unterordner meines Hostings auszuführen. Meine Domain ist www.gorangligorin.com, aber ich möchte meine App in www.gorangligorin.com/testmvc laufen lassen. ASP.NET MVC läuft ohne Probleme auf der obersten Ebene, aber nicht in Unterordnern.Wie hostet ich ASP.NET MVC-Site in einem Unterordner

Der Server sagt dies (Linie 58 ist rot gefärbt):

Line 56:    ASP.NET to identify an incoming user. 
Line 57:  --> 
Line 58:  <authentication mode="Forms"> 
Line 59:  <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
Line 60:  </authentication> 

Was kann ich tun, um diese ASP.NET MVC Website Arbeit zu machen? Dies ist nicht auf meinem Computer gehostet, so dass ich nicht auf IIS-Konfigurationen zugreifen kann.

+1

Sie können testmvc nicht zu einem virtuellen Verzeichnis machen? –

+0

Ich habe ein virtuelles Verzeichnis erstellt und es funktioniert endlich. Zumindest die erste Seite, die Unterseiten funktionieren immer noch nicht. Es sieht so aus, als ob MVC Routing nicht funktioniert, weil es sagt "Die Ressource kann nicht gefunden werden". Ich habe versucht, auf einen Unterordner zuzugreifen, der nicht existiert. Gibt es noch eine andere Einstellung, die ich ändern muss? – gligoran

+0

Behoben. Ich machte einen dummen Tippfehler beim Schreiben von benutzerdefinierten Routen und es führte zu nicht funktioniert :) – gligoran

Antwort

3

Haben Sie eine ASP.NET-Anwendung in IIS für dieses Verzeichnis erstellt? Andernfalls denkt ASP.NET, dass das Stammverzeichnis Ihres Servers das Stammverzeichnis Ihrer Anwendung und nicht das des Unterverzeichnisses ist.

+0

Wie mache ich das? – gligoran

+0

Sie benötigen Zugriff auf IIS. –

+0

In gewisser Weise war dies die Lösung. Als ich ein virtuelles Verzeichnis erstellte, gab es ein Kontrollkästchen, wenn ich darin eine asp.net-Anwendung erstellen wollte. – gligoran

1

Haben Sie Folgendes versucht?

<forms loginUrl="~/testmvc/Account/LogOn" timeout="2880" /> 

die Tilde (~) ist eine Abkürzung für die HttpRuntime.AppDomainAppVirtualPath Eigenschaft, die auf den virtuellen Anwendungsstamm bezieht, nicht die Wurzel des Webservers.

HttpRuntime.AppDomainAppVirtualPath 

http://msdn.microsoft.com/en-us/library/system.web.httpruntime.appdomainappvirtualpath.aspx

Auch, was ist das Sternchen nach oben?

+0

Dies hilft in keiner Weise. Ich habe versucht mit und ohne ~, mit oder ohne/testmvc vor/account/logon, ich habe versucht, Konto/Anmeldung und testmvc/account/logon (ohne die/Infront). – gligoran

+0

Ich weiß nicht wirklich, wie das Sternchen zustande kam, aber es ist nicht in der Web.Config oder auf der Fehlerseite. Ich habe den ursprünglichen Post bearbeitet. – gligoran

5

Die Einstellungen der Stammanwendung in Ihrem IIS können sich auf Ihre untergeordneten Apps auswirken. Um die Stammeinstellungen ausbreitet, geben Sie den folgenden Code in Ihr Root web.config zu verhindern:

<location path="." inheritInChildApplications="false"/> 

Hoffnung, das hilft.

+0

Ich habe das versucht, aber es hat nicht wirklich viel geholfen. – SwissCoder

+0

Das funktioniert, wenn es richtig eingerichtet ist ... siehe http://stackoverflow.com/a/18217352/1339704 – Soenhay

1

Es gibt im Wesentlichen zwei Gründe für dieses Problem:

  1. Wenn Sie nicht Ihre asp.net Anwendung in IIS konfiguriert sind wie in das virtuelle Verzeichnis als Anwendung gesetzt

  2. Zwei oder viele Web.Config ist auf Ihrer Site vorhanden. Da Sie die web.config auf der Stammebene und die zweite web.config im Unterverzeichnis haben. Entfernen Sie einfach die Datei web.config, wenn sie gleich ist. oder gehen Sie zurück zu 1 und löst es dementsprechend in dem IIS-

    Und da Sie ein Unterverzeichnis von der Wurzel hinzugefügt, würde ich sagen, dass Sie Ihre Routen in der global.asax-Datei ändern müssen, zu handhaben die Routing-

Url = "testmvc/{Controller}/{Aktion}/{ID}"