【问题标题】:How to serve favicon.ico and robots.txt files from ASP.NET MVC3 application如何从 ASP.NET MVC3 应用程序提供 favicon.ico 和 robots.txt 文件
【发布时间】:2023-03-04 22:14:01
【问题描述】:

ASP.NET MVC3 应用程序作为虚拟主机托管在 Mono 中的 Apache 中,地址为 http://www.mysite.com

对文件 robots.txt 、 favicon.ico 和 apple-touch-icon.png 的请求导致以下 404 错误,因为 这些名称没有 MVC3 控制器。 如何提供这些文件?是否可以强制 Apache 将它们作为常规文件提供服务,或者我们可以强制 MVC3 应用程序返回这些文件? 哪种方法是正确的实现方式?

System.Web.HttpException: The controller for path '/robots.txt' was not found or does not implement IController.
  at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance (System.Web.Routing.RequestContext requestContext, System.Type controllerType) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.DefaultControllerFactory.CreateController (System.Web.Routing.RequestContext requestContext, System.String controllerName) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.MvcHandler.ProcessRequestInit (System.Web.HttpContextBase httpContext, IController& controller, IControllerFactory& factory) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.MvcHandler+<>c__DisplayClass6.<BeginProcessRequest>b__2 () [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.SecurityUtil+<>c__DisplayClassb`1[System.IAsyncResult].<ProcessInApplicationTrust>b__a () [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0 (System.Action f) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust (System.Action action) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust[IAsyncResult] (System.Func`1 func) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.MvcHandler.BeginProcessRequest (System.Web.HttpContextBase httpContext, System.AsyncCallback callback, System.Object state) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.MvcHandler.BeginProcessRequest (System.Web.HttpContext httpContext, System.AsyncCallback callback, System.Object state) [0x00000] in <filename unknown>:0 
  at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest (System.Web.HttpContext context, System.AsyncCallback cb, System.Object extraData) [0x00000] in <filename unknown>:0 
  at System.Web.HttpApplication+<Pipeline>c__Iterator3.MoveNext () [0x00000] in <filename unknown>:0 
  at System.Web.HttpApplication.Tick () [0x00000] in <filename unknown>:0 

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-3 mono


    【解决方案1】:

    修复 robots.txt:

    右击项目名称,选择“添加->新建项目”
    选择“文本文件”并将其命名为“robots.txt”
    您可以将此文件留空

    修复 favicon.ico:

    转到 Global.asax.cs 文件的 RegisterRoutes 方法并将其添加到顶部附近:您可以查看此页面以获取更多信息:Favicon Icon-MVC3 ASP.NET

    routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
    


    修复 apple-touch-icon.png:

    看看这些网站
    Why am I getting error for apple-touch-icon-precomposed.png
    http://mathiasbynens.be/notes/touch-icons

    【讨论】:

    • 应用程序可以在具有不同图标的不同站点上运行。为了解决 favicon 问题,我将 routes.MapRoute("favicon.ico","favicon.ico",new {controller = "Image", action = "Icon"}); 添加到 Global.asax.cs 以获取特定站点的图标。这样可以吗?
    • 我认为应该可以。如果没有,您可以将链接标签添加到视图中。这是关于它的 stackoverflow 帖子:stackoverflow.com/questions/487230/…
    • 站点已经有
    • x-icon 和 vn.microsoft.icon 是您尝试加载的仅有的两个图标吗?如果是这样,添加我在答案中的路线(这将忽略任何名为 favicon.ico 的文件)并删除您在第一条评论中添加的路线应该可以解决它。
    猜你喜欢
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多