2012-03-15 22 views
6

tengo el siguiente en mi opinión, la maquinilla de afeitar para un editor de plantillas en mi Orchard módulo:Orchard CMS: archivo JavaScript devuelve el error 404 no se ha encontrado a pesar de que existe

Script.Include("assets.js").AtFoot(); 

Cuando se representa la página que se puede ver esta línea en la parte inferior:

<script src="/Modules/MyModuleName/scripts/assets.js" type="text/javascript"></script> 

¡Hermoso! El único problema es que cuando visito ese camino, aparece un error 404. La secuencia de comandos no existe.

... pero lo hace! Se guarda como Orchard.Web\Modules\MyModuleName\Scripts\assets.js

El resto de la funcionalidad de mi módulo funciona bien - Puedo habilitarlo y usarlo, simplemente no encontrará el archivo de script. ¿Me estoy perdiendo algo obvio aquí?

+0

Supongo que el uso de mayúsculas en/Scripts/vs./scripts/¿no es el problema? – AlexMA

+0

Hola @Alex, lo intenté con ambos :( – greg84

+1

¿Tienes un web.config en tu carpeta de scripts con los permisos correctos? – forsvarir

Respuesta

8

De forma predeterminada, Orchard está configurado para restringir los permisos de la carpeta. Esto generalmente se anula añadiendo un archivo web.config a cada carpeta según sea necesario (en este caso, la carpeta de scripts).

Si usa el módulo codegen para generar su módulo, esto se hace para usted como parte de la generación. Si no es así, entonces necesita agregar el web.config usted mismo.

El web.config codegenned se parece a esto:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <appSettings> 
    <add key="webpages:Enabled" value="false" /> 
    </appSettings> 
    <system.web> 
    <httpHandlers> 
     <!-- iis6 - for any request in this location, return via managed static file handler --> 
     <add path="*" verb="*" type="System.Web.StaticFileHandler" /> 
    </httpHandlers> 
    </system.web> 
    <system.webServer> 
    <staticContent> 
     <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" /> 
    </staticContent> 

    <handlers accessPolicy="Script,Read"> 
     <!-- 
     iis7 - for any request to a file exists on disk, return it via native http module. 
     accessPolicy 'Script' is to allow for a managed 404 page. 
     --> 
     <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" /> 
    </handlers> 
    </system.webServer> 
</configuration> 
+1

Gracias - funciona ahora :) Originalmente creé el módulo usando la herramienta de código gen pero eliminé la carpeta de scripts. Cuando lo recreé, obviamente el archivo de configuración se había ido. Doh! – greg84

2

He encontrado una otra razón para este 404 que me gustaría mencionar. UrlScan por defecto rechaza un punto en el camino, encontré esto en mi registro: URL Rechazado + contiene + punto + en + ruta

Así que cambiar el ajuste en:

AllowDotInPath=1 

y funciona de nuevo. Me tomó algo de tiempo encontrar esto, porque nunca uso un punto en la ruta ...

Cuestiones relacionadas