asp.net mvc-mvc CSS在Visual Studio中调试时未呈现



当我编译MVC项目并在[https://localhost/MyApp.]按钮和背景图像未显示。它工作了一次,然后由于某种原因停止了工作。页面没有缓存?我用firebug检查页面是否丢失,没有发现任何错误。Visual Studio 2010中的某些设置需要更改还是IIS?

但是,当我将其发布到单个网站,而不是在(默认网站(区域时,使用[https://localhost:444]我在IIS 7.5中安装的网站,css似乎呈现良好。

问题出在哪里?

MVC 4网站上出现的一个常见问题是,当您有css捆绑包时,发布和调试之间存在差异。这不一定是你的情况,但你有症状。

我将举例说明。

如果你有这样的捆绑包:

var styles = new StyleBundle("~/Content/css").Include(
            "~/Content/toastr.css",
            "~/Content/flags/stylesheets/flags16.css",
            "~/Content/flags/stylesheets/flags32.css",
            "~/Content/Site.css")

在flags16.css中,您有:

background:url('flags/images/flags16.png');

哪个使用~Content/flags/images/flags16.png 中的文件

这将在发布模式下工作(web.config中的compilation debug="false"(,因为捆绑包中的所有css文件都将作为位于~/Content/css的1个文件,相对路径'flags/images/flags16.png'指向正确的文件。但是,在调试模式下,ASP.NET MVC将禁用缩小,如果您在视图中使用@Styles.Render("~/Content/css"),它将呈现指向捆绑包中包含的每个文件的链接,因此将出现一个:

<link href="/WorkOrders.Web/Content/flags/stylesheets/flags16.css" rel="stylesheet">

从那个路径,到图像的相对路径是不好的,所以flags16.png中的图像将不会被渲染。

解决这个问题的一种方法是,您需要将包含对图像引用的.css文件移动到bundle所指向的位置(在本例中为~/Content(,这样当它被提供缩小和原始时,它将具有相同的路径。

更新由于您的应用程序不是mvc4,并且当您的应用不在网站的根目录中时(即当它在localhost/myapp中时(,您会遇到问题,因此您需要检查图片引用中的路径。您可能绝对引用了它们('/somepath/mypic.png'(,当您的应用程序位于localhost/MyApp时,路径需要为localhost/MyApp/somepath/mypic.png。如果您从cshtml中使用路径,则可以通过将路径替换为@Url.Content(~/somepath/mypic.png)来解决此问题。如果路径在css中,那么您需要放置图片的相对路径。

我刚刚遇到了同样的问题——找不到或渲染图像、脚本和css。(Visual Studio 2013,Windows 8.1。项目从Visual Studio 2010转移过来。(

该问题是由Web.config中的一行引起的:

<mimeMap fileExtension=".mp4" mimeType="video/mp4" />

似乎是因为IIS Express应用程序.host文件已经包含此mimeMap定义,IIS Express无法应对再次定义它。

从Web.config中删除此行完全解决了问题。

您的网站似乎已配置为使用SSL。除了在本地运行时,您可能没有证书颁发机构信任的有效SSL证书,并且客户端浏览器拒绝下载静态资源。解决此问题的一种方法是将地址添加为受信任地址。因此,将url复制粘贴到浏览器地址栏中的一些CSS文件中:

https://localhost/MyApp/Content/Main.css

您将看到一条关于无效证书的警告,您可以通过在浏览器中添加异常来忽略该警告。一旦添加了异常并且应用程序应该开始正常工作,请按Ctrl+F5以强制刷新。

当我遇到这个问题时,我发现我所有的CSS和Script文件在浏览器(Firefox 33.0.2(中下载时都遇到了HTTP 500错误

在任务管理器中杀死我的浏览器实例,然后重新开始为我修复了这个问题。

最新更新