2013-06-01 4 views
10

Ich versuche zu verstehen, warum mein Standarddokument beim Durchsuchen des virtuellen Verzeichnisses nicht angezeigt wird. Wenn ich auf die Website zu sehen, wie ich in der Lage zu sollte, bekomme ich diese:IIS 8 - Standarddokument - Ressource kann nicht gefunden werden

enter image description here


Allerdings, wenn ich die Seite an die URL hinzufügen, es kommt:

enter image description here


Eine SO answer schlug vor, alle Standarddokumente (in IIS) außer dem echten zu entfernen. Ich habe das versucht (Bild unten), aber es hat nicht geholfen.

enter image description here


Warum wird IIS diese Seite nicht dienen, wenn die Root-URL (http://localhost/SignalRChat)?

Dies ist der relevante Teil der web.config nach dem Standard docs entfernen:

<defaultDocument> 
    <files> 
     <remove value="default.aspx" /> 
     <remove value="iisstart.htm" /> 
     <remove value="index.html" /> 
     <remove value="index.htm" /> 
     <remove value="Default.asp" /> 
     <remove value="Default.htm" /> 
     <add value="ChatPage.cshtml" /> 
    </files> 
</defaultDocument> 

Dies ist der Handler Abschnitt:

<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> 
+0

Fragen Sie nach dem '' Abschnitt? –

+0

Ja, dass ... – Aristos

+0

Ich habe es gerade gepostet. –

Antwort

-4

Es scheint, Ihre Verzeichnissuche in IIS deaktiviert. Sie haben das Durchsuchen des Verzeichnisses in Ihrem IIS aktiviert. Es wird dein Problem lösen.

besuchen Sie http://technet.microsoft.com/en-us/library/cc731109%28v=ws.10%29.aspx für weitere Details.

Hoffe, das wird helfen.

+1

Ich glaube wirklich nicht, dass dies die Antwort sein sollte. Erstens, es hat nicht funktioniert. Zweitens gibt der von Ihnen angegebene Link Folgendes an: Aktivieren Sie die Verzeichnissuche, wenn Clientbrowser eine Webseite anzeigen sollen, die den Inhalt eines Verzeichnisses auflistet, wenn eine Anforderung keinen Dokumentnamen angibt und IIS kein Standarddokument zurückgeben kann. Ein Standarddokument kann nicht zurückgegeben werden, wenn IIS keine Datei in dem Verzeichnis findet, das einem in der IIS-Standarddokumentliste angegebenen Dateinamen entspricht oder wenn die Standarddokumentfunktion in IIS deaktiviert ist. Ich möchte Inhalte nicht anzeigen und Ich habe ein Standarddokument angegeben. –

+0

Und ich habe die Standard-Dokument-Funktion nicht deaktiviert. –

0

Sie können ein Installationsprogramm für eine Website/Anwendung erstellen. Es hat die Option, die Startseitenauswahl festzulegen.

gesetzt So die ChatPage.cshtml als Start up Seite im Installer und nach der Installation, wenn Sie localhost/SignalIRChat

Sie den Inhalt ChatPage.cshtml sehen, ohne den „ChatPage.cshtml“ Name in Adresse zeigt Bar.

Es wird Ihr Problem lösen.

+0

Danke, aber ich möchte dafür kein Installationsprogramm verwenden. Ich verwende nur die Option Veröffentlichen von VS. Nun, wenn Sie wüssten, was der Installer getan hat, um dies zu beheben, wäre das hilfreich. –

0

Sie müssen diese Handler am Ende Ihres handlers Abschnitt hinzuzufügen:

<add name="StaticFile" path="*" verb="*" type="" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" scriptProcessor="" resourceType="Either" requireAccess="Read" allowPathInfo="false" preCondition="" responseBufferLimit="4194304" /> 

Update:

Da .cshtml Dateien standardmäßig blockiert sind, benötigen Sie:

<handlers> 
     <remove name="cshtml-ISAPI-4.0_64bit" /> 
     <remove name="cshtml-ISAPI-4.0_32bit" /> 
     <remove name="cshtml-Integrated-4.0" /> 
     <remove name="cshtm-ISAPI-4.0_64bit" /> 
     <remove name="cshtm-ISAPI-4.0_32bit" /> 
     <remove name="cshtm-Integrated-4.0" /> 
    </handlers> 

    <staticContent> 
     <mimeMap fileExtension=".cshtml" mimeType="text/html" /> 
    </staticContent> 

Entfernen Sie den StaticFile Handler vorgeschlagen (wenn noch ther e).

+0

Nach dem Hinzufügen dieses Handlers (ohne das Typ-Attribut, weil die IDE darüber reklamiert), erhalte ich einen Fehler: 'Kann doppelten Eintrag Eintrag vom Typ 'hinzufügen' nicht mit eindeutigen Schlüsselattribut 'Name' auf 'StaticFile''I don Ich weiß nicht warum; Es gibt kein anderes Element mit dem Namen StaticFile. –

+0

Ich habe meine Antwort überarbeitet. Bitte werfen Sie einen Blick – haim770

+0

Ich habe Ihren Vorschlag versucht. Ich bekomme immer noch: 'Die Ressource kann nicht gefunden werden. Danke für den Versuch. Ich bin bereit aufzugeben und nenne es einfach Index oder so. –

1

Von Ihren Tags sieht es so aus, als ob Sie MVC und eine Ansicht mit der Rasiereransichts-Engine (cshtml) verwenden. In MVC wird eine URL nicht direkt einem Dokument zugeordnet. Daher sollte die Diskussion nicht über Standarddokumente, Handler und IIS-Konfiguration geführt werden.

Eine URL muss mit einer definierten Route übereinstimmen, die eine Aktion auf einem Controller aufruft. Diese Aktion rendert dann die Ansicht (* .cshtml).

Versuchen Sie, Ihre Routen zu reparieren, um die Anfrage bearbeiten zu können. Wenn Sie weitere Hilfe benötigen, sollten Sie Ihre Frage mit weiteren Informationen zum Controller und Ihren Routen aktualisieren.

0

Dies könnte ein MVC-Problem sein.

Möglicherweise benötigen Sie eine Umleitung vom Index zu dieser anderen Aktion in Ihrem SignalRChat-Controller.
Etwas wie folgt aus:

public ViewResult Index() 
{ 
    return View("ChatPage"); 
} 
2

Ein weiterer möglicher Grund des 404-Fehler, wenn Sie Ihre Anfrage an einen bestimmten Dateinamen am Ende der URL verweist nicht ist, dass der IIS-Request Filtering Regeln erweiterungs Anfragen verweigern.

Um es sicher zu wissen, finden Sie den Subcode des 404-Fehler. Normalerweise , dann ist es 404,7, aber es kann einige Variationen,

Sie können aber auch zu versuchen erlauben erweiterungs Anfragen explizit durch Hinzufügen <add fileExtension="." allowed="true" /> zu Ihrem web.config wie folgt:

<system.webServer> 
    <security> 
     <requestFiltering> 
     <fileExtensions> 
      <add fileExtension="." allowed="true" /> 
     </fileExtensions> 
     </requestFiltering> 
    </security> 
    </system.webServer> 

Bitte lassen Sie mich kniw, wenn es geholfen hat oder deinen exakten Fehler 404 mit dem Subcode bekannt gab.

+0

Behoben für mich! Danke vielmals. Ist die Anforderungsfilterung in IIS 8 standardmäßig aktiviert? (da ich dies unter Windows 7/IIS 7.5 nicht machen musste) – dotnetguy