MVC2 / 3 методы контроллера ChildActionOnly доступны для Googlebot? - PullRequest
3 голосов
/ 14 августа 2011

Если эта проблема возникла уже несколько месяцев, и я подумал, что я показал Googlebot в ранних версиях приложения этот метод контроллера.Но недавно добавлен новый - LatestNews, также помеченный [ChildActionOnly] атрибутом

Проблема Эльма иногда ловит следующее исключение:

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>

Мне интересно, как Google могнайти это детское действие.У меня никогда не было развернутой версии без ChildActionOnly

Буду признателен за любую помощь!

Ответы [ 2 ]

1 голос
/ 14 августа 2011

Я бы не стал сильно беспокоиться об этом - главное, чтобы атрибут ChildAction работал как положено.

Подобные проблемы часто являются результатом жадных маршрутов и опечаток.Вы можете скачать Glimpse (из nuget), чтобы точно видеть, какие маршруты сопоставляются, но это не поможет вам найти ссылки, которые могли быть опечатаны (возможно, указывают на ваши дочерние действия).

0 голосов
/ 15 августа 2011

AFAIK, Google Bot не знает ничего жаргона языка сервера. Он только отправляет запрос на ваш сервер, а затем играет с возвращенным ответом (который включает только Html, js и т. Д.). Он не знает об URL вашего дочернего действия, если вы не выставили его вручную.

...