c# - smart - que es error 404
El enlace css incluido tiene un error 404 (4)
Encontré esta pregunta a través de los resultados de google, pero el problema en mi caso fue que Windows 2008 necesitaba esto en web.config
para que funcione cuando compilación debug = false.
<system.webServer>
<modules>
<add name="BundleModule" type="System.Web.Optimization.BundleModule" />
</modules>
</system.webServer>
Funcionó bien en la máquina de desarrollo Win7 sin esto.
Estoy tratando de agrupar para trabajar en ASP.NET MVC 4. Recibo un error 404 del enlace generado para el CSS incluido. He hecho lo siguiente:
Se instaló el paquete "Microsoft ASP.NET Web Optimization Framework" a través de NuGet (v4.0.20710.0)
Creó una clase BundleConfig en el directorio App_Start con los siguientes contenidos:
using System.Web.Optimization; namespace BsdAppTemplate.Web_Nancy.App_Start { public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new StyleBundle("~/bundles/styles/cvi").Include( "~/mainstyles.css" )); } } }
Se agregó lo siguiente a Web.config en la raíz del sitio:
<system.web> <compilation debug="false" targetFramework="4.5" /> <pages> <namespaces> <add namespace="System.Web.Optimization"/> ... </namespaces> </pages> </system.web>
Agregué lo siguiente al elemento principal de mi archivo de diseño MVC:
@Styles.Render("~/bundles/styles/cvi")
Copié el archivo CSS al que se hace referencia en BundleConfig ("mainstyles.css") en el directorio raíz de mi proyecto web.
Cuando veo el origen de un archivo renderizado, puedo ver que el enlace aparece como:
<link href="/bundles/styles/cvi" rel="stylesheet"/>
Este enlace genera un 404 al navegar hacia él o ver la solicitud de la página en la pestaña de red de Chrome.
También probé el equivalente en un formulario web, pero obtengo el mismo resultado (404) del enlace generado cuando agrego:
<%: Styles.Render("~/bundles/styles/cvi") %>
Parece que se ha perdido el paso en el que aplica su configuración al llamar a RegisterBundles
en Application_Start
:
protected void Application_Start()
{
...
BundleConfig.RegisterBundles(BundleTable.Bundles);
...
}
Por lo general, en los casos en que la clase BundleConfig
ya está allí (ya sea como parte de la plantilla del proyecto o creada por el paquete NuGet durante la instalación), esta llamada también ya está presente; esta es la razón por la que muchos tutoriales están implícitos al respecto.
También debe tener en cuenta que la clase BundleConfig
está ahí para la separación de preocupaciones y para mantener el Application_Start
limpio. En casos simples, nada le impide registrar paquetes directamente en Application_Start
:
protected void Application_Start()
{
...
BundleTable.Bundles.Add(new StyleBundle("~/bundles/styles/cvi").Include("~/mainstyles.css"));
...
}
Tuve el mismo problema (en el formulario web ASP.Net), resolví mi problema con Ignorar la ruta "paquetes" en Global.asax:
routeCollection.Ignore("bundles/{*catch}");
Tuve el mismo problema que mi paquete de scripts respondió repentinamente con 404. Tengo una solución similar a la respuesta de @fiat que encontré en esta entrada de blog .
La solución fue eliminar y agregar el BundleModule
en la sección de parte de módulos de la sección system.webServer
.
<modules runAllManagedModulesForAllRequests="true">
<remove name="BundleModule" />
<add name="BundleModule" type="System.Web.Optimization.BundleModule" />
</modules>