【问题标题】:MVC2/3 ChildActionOnly controller methods are accessible for Googlebot?Googlebot 可以访问 MVC2/3 ChildActionOnly 控制器方法吗?
【发布时间】:2011-08-15 11:29:16
【问题描述】:

如果这个问题已经有几个月了,并且认为我在应用程序的早期版本中向 Googlebot 展示了该控制器方法。不过最近又新增了一个——LatestNews也标有[ChildActionOnly]属性

问题 Elmah 有时会遇到以下异常:

The action 'LatestNews' is accessible only by a child request.

来自

Connection: Keep-alive Accept: */* Accept-Encoding: gzip,deflate From: googlebot(at)googlebot.com Host: soldiez.com User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

我有以下动作声明(当然有点简化)

[ChildActionOnly]
public virtual ActionResult LatestNews()
{
   var data = DataManager.CollectNews();
   return PartialView( data );
}

View 是这样调用的:

<asp:Content ID="Content1" ContentPlaceHolderID="RightContent" runat="server"><%   
   Html.RenderAction( MVC.Home.LatestNews() );
%></asp:Content>

我想知道谷歌如何找到该子操作。我从来没有部署过没有 ChildActionOnly 的版本

我将不胜感激!

【问题讨论】:

    标签: asp.net-mvc googlebot


    【解决方案1】:

    我不会太担心这一点 - 主要是 ChildAction 属性按预期工作。

    此类问题通常是贪婪路由和错误链接的结果。您可以下载 Glimpse(来自 nuget),这样您就可以准确查看匹配的路线,但这不会帮助您找到可能输入错误的链接(可能指向您的子操作)。

    【讨论】:

    • 本,谢谢您的回复。实际上,几个月来我并不担心它,但是当最近通过单个调用添加新的子动作时(见主题),我真的很惊讶和困惑。只是一个想法 - 如果由于某种原因在该页面上出现异常,当机器人抓取它并从堆栈跟踪中选择链接(该位置还没有自定义错误页面)时,Google 可以解析它吗?..
    【解决方案2】:

    AFAIK,Google Bot 不知道任何服务器语言术语。他只向您的服务器发送请求,然后使用返回的响应(仅包括 Html、js 等)。除非您手动公开它,否则他不知道您的子操作的 url。

    【讨论】:

    • 是的。它不应该对此一无所知,因为此信息不会填充到呈现的 html 中。但实际上在 2-3 天内部署了上面的代码,我查看了异常日志,发现子操作被 googlebot 调用了多次......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 2011-07-03
    • 2022-12-03
    • 2011-11-17
    • 2013-11-03
    相关资源
    最近更新 更多