2012-02-20 15 views
7

Chciałbym mieć folder/downloads wewnątrz aplikacji internetowej Orchard, w której mogę kierować klientów, aby mogli pobierać pliki, tj. www.mydomain.com/downloads/test.txtKatalog wirtualny wewnątrz aplikacji internetowej Orchard

W IIS utworzyłem katalog wirtualny (nie aplikację) pod witryną Orchard, która wskazuje folder pobierania na serwerze.

W pliku Orchard Global.ascx, dodałem następujące, myśląc, że to był problem routingu:

public static void RegisterRoutes(RouteCollection routes) { 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.IgnoreRoute("downloads/{*pathInfo}"); // added this IgnoreRoute 
} 

Nie 100% pewien, czy to jest wymagane.

Jednak po pobraniu pliku, www.mydomain.com/downloads/test.txt, nadal pojawia się błąd 404.

Odpowiedz

8

Znaleziony poprawkę dzięki tym poście: http://orchard.codeplex.com/discussions/280041

Po pierwsze, to musiał być aplikacja pod stronie Orchard, raczej niż tylko katalogu wirtualnego. W IIS możesz kliknąć prawym przyciskiem myszy na katalogu wirtualnym> przekonwertować do aplikacji.

Po tym problem polega na tym, że web.config w Orchard propaguje do aplikacji podrzędnych. Aby to zatrzymać, musisz dodać <location path="." inheritInChildApplications="false"> wokół węzłów <system.web> i <system.webserver> w pliku web.config firmy Orchard. Możesz przeczytać więcej na tagu lokalizacji here.

Po wprowadzeniu tych zmian, mogę pomyślnie pobrać plik test.txt bez żadnych problemów.

2

Świetne, dziękuję bardzo za tę odpowiedź. Po wdrożeniu go prosto tutaj moje style sadownicze złamał, ale po spojrzeć na ten link, zauważyłam ten kawałek kodu:

<location path="Themes"> 
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false" /> 
     <handlers accessPolicy="Script"> 
      <remove name="StaticFile" /> 
     </handlers> 
    </system.webServer> 
    </location> 
    <location path="Core">  
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false" /> 
     <handlers accessPolicy="Script"> 
      <remove name="StaticFile" /> 
     </handlers> 
    </system.webServer> 
    </location> 
    <location path="Media"> 
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false" /> 
     <handlers accessPolicy="Script"> 
      <remove name="StaticFile" /> 
     </handlers> 
    </system.webServer> 
    </location> 
    <location path="Modules"> 
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false" /> 
     <handlers accessPolicy="Script"> 
      <remove name="StaticFile" /> 
     </handlers> 
    </system.webServer> 
    </location> 

Który będzie naprawić swój styl sad, dla każdego, mającego tę kwestię.

powinien być umieszczony w pliku web.config w katalogu głównym swojej stronie, tuż przed <runtime> i po ostatnim </location>, że trzeba będzie tylko dodatkiem do końca owijania <system.webServer>.

0

Niekoniecznie trzeba zhakować konfigurację w sadzie. W podobnej sytuacji dla mnie było wystarczająco dużo, aby stworzyć web.config z katalogu wirtualnego o następującej treści:

<configuration> 
<system.webServer> 
<handlers accessPolicy="Read, Script"> 
    <clear /> 
    <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Script" /> 
</handlers> 
</system.webServer> 

Powiązane problemy