ASP.NET MVC3可以';t access字体(静态内容)
我觉得MVC3有个奇怪的问题。 我的css文件包含一个适用于IE的@字体,如下所示:ASP.NET MVC3可以';t access字体(静态内容),asp.net,css,asp.net-mvc-3,webfonts,Asp.net,Css,Asp.net Mvc 3,Webfonts,我觉得MVC3有个奇怪的问题。 我的css文件包含一个适用于IE的@字体,如下所示: @font-face { font-family: AvantGardeNormal; src: url('fontname.eot'); } 它在本地(在我的机器上)运行良好,但是当我发布到服务器(Azure)时,我得到了这个错误:(就像它试图访问字体文件一样,就像控制器中的操作一样) 错误(System.Web.HttpException):路径“/Content/fontname.eot
@font-face {
font-family: AvantGardeNormal;
src: url('fontname.eot');
}
它在本地(在我的机器上)运行良好,但是当我发布到服务器(Azure)时,我得到了这个错误:(就像它试图访问字体文件一样,就像控制器中的操作一样)
错误(System.Web.HttpException):路径“/Content/fontname.eot”的控制器未找到或未实现IController
当然,字体不会加载
谢谢。根据我的经验,当我使用ELMAH捕获这些异常时,100%的时间都是因为我的部署没有部署字体文件。您应该仔细检查服务器上是否存在该文件。有几种方法可以验证引用、内容或数据文件是否属于部署的一部分。这里介绍了大多数常见的问题: 首先您可以检查引用或静态内容的属性,查看“Copy Local”是否设置为“True” 其次,您可以解压CSPKG文件(如果需要,将其重命名为zip),然后解压CSPKG中的CSSX文件。解压CSSX文件后,您可以看到其中的可用内容,因为这是部署后应用程序可用的内容
第三个,如果您可以通过RDP访问Azure VM,您可以使用RD凭据登录,并查找驱动器E:和文件夹Approot\folder中的所有引用和静态内容。将“构建操作”设置为“内容”“对于每个字体文件,否则将不会部署它们。我本周也遇到了同样的问题,将带有可下载字体的MVC应用程序部署到运行IIS的服务器上 为了让IIS返回正确的内容,它使用了一个名为MimeTypes的查找表。 基本上是一个文件扩展名查找。您必须将.eot文件扩展名添加到IIS或web.config中的Mimetypes中
<system.webServer>
<staticContent>
<remove fileExtension=".eot" />
<mimeMap fileExtension=".eot" mimeType="application/application/vnd.ms-fontobject" />
</staticContent>
</system.webServer>
第二部分是在项目中添加一个httpHandler,以便在http请求中为字体文件提供服务,这在一开始我并不清楚
<system.web>
<httpHandlers>
<add verb="*" path="*.eot" type="System.Web.StaticFileHandler" />
</httpHandlers>
</system.web>
我也和艾玛一起抓到他们。我会检查一下,为什么它不部署字体文件,但其他的都部署了?