Sitecore路由和MVC路由冲突

时间:2019-06-04 15:57:48

标签: sitecore sitecore6 sitecore8 sitecore-mvc sitecore9

我们最近已从Sitecore 8.0升级到Sitecore 9.0.2。升级后,我们面临Api路由的问题。

我们有多站点环境,并且我们已经在解决方案/站点之一中定义了“自定义路由”配置。而且我们对所有其他站点使用相同的路由。升级后,其中一个站点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>
已通过javascript调用的

API端点:

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

由于通配符匹配任何字符串,因此在这种情况下,它与api / sm匹配,因此采用Sitecore路由。

如果上述情况属实,如何解决呢?

注意:这在Sitecore 8实例中是绝对可以的,在Sitecore 9实例中,其他站点也可以使用相同的api并获得响应。

您的及时回答将不胜感激。

谢谢!

更新1: 通过将以下设置更改为“禁用”(默认为DeepScan),api开始命中,但是页面破裂,因为页面上未加载少量图像。这是不可接受的。

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

有线索吗?

0 个答案:

没有答案