Маршрутизация Sitecore и MVC противоречивы - PullRequest
0 голосов
/ 04 июня 2019

Мы недавно обновили Sitecore 8.0 до Sitecore 9.0.2.После обновления мы сталкиваемся с проблемой маршрутизации Api.

У нас есть многосайтовая среда, и мы определили конфигурацию Custom Route в одном из решений / сайта.И мы используем ту же маршрутизацию для всех других сайтов.После апгрейда на один сайт api звонки не идут.Когда мы отладили, мы обнаружили, что маршрутизация MVC не выполняется, вместо этого она использует маршрутизацию Sitecore.

Когда мы углубились в проблему, мы нашли причину (надеюсь, что так) использовать маршрутизацию Sitecore вместо маршрутизации MVC.Причина была в том, что подстановочные знаки на этом сайте были.

Вот немного информации, чтобы объяснить.

Конфигурация маршрута:

private void Configure(HttpConfiguration configuration)
        {
            var routes = configuration.Routes;
            RouteTable.Routes.MapRoute(
               "LeadForm",
                "api/sm/leadforms/{action}",
                new
                {
                    controller = "LeadForm"
                });
        }

Дерево контента Sitecore

enter image description here

Конфигурация сайта

<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <!-- Site Definition -->
    <sites>
      <site patch:before="*" name="microsites" linkProvider="provider-sm-microsite" mvcArea="SMMicrosites" hostName="MySite" 
            targetHostName="MySite" dictionaryDomain="MicrositesTranslations" virtualFolder="/" 
            physicalFolder="/" rootPath="/sitecore/content/PSM" startItem="/Microsites" language="en" database="web" 
            domain="MyDomain" disableClientData="false" templateDir="{B378395B-EF06-45F1-9C00-ffffffff}"/>
    </sites>
  </sitecore>
</configuration>

Конечная точка API, которая была вызвана из javascript:

http://MySite/api/sm/leadforms/validate

Поскольку подстановочный знак соответствуетлюбые строки, в этом случае это соответствует api / sm, следовательно, он принимает маршрутизацию Sitecore.

Если вышеприведенное верно, как решить эту проблему?

Примечание: это работает абсолютно нормально в экземпляре Sitecore 8 и в экземпляре Sitecore 9, другие сайты могут поразитьтот же API и получить ответ.

Ваш быстрый ответ будет оценен.

Спасибо!

Обновление 1: При изменении значения параметра «Отключено» (по умолчанию установлено DeepScan), API начинает работать, но страницы ломаются, так как мало изображений.не загружается на странице.Это не приемлемо.

<setting name="ItemResolving.FindBestMatch" value="Disabled" />

Есть ли отведения?

...