Мы недавно обновили 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
Конфигурация сайта
<?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" />
Есть ли отведения?