【问题标题】:Changing default base URL of Sitecore ServiceApiController, Is it possible?更改 Sitecore ServiceApiController 的默认基本 URL,可以吗?
【发布时间】:2016-01-29 05:28:31
【问题描述】:

当我们实现SitecoreApiController 时,对于我们使用Sitecore.Services.Core.ServicesController("namespace") 属性创建的每个操作方法,我们都会得到一个这样的url:

/sitecore/api/ssc/{namespace}/{controller}/{id}/{action}

我想知道我们是否可以在配置文件中以某种方式更改此默认模式。我对/sitecore/api/ 部分特别感兴趣,因为有时出于安全考虑,某些客户不喜欢在幕后透露太多关于CMS 平台的信息。有时他们甚至要求我们在 HTTP 标头中隐藏任何明确说明 Microsoft ASP.NET 的内容。

这里可以吗?

编辑

this link 展示了一种使用管道自定义它的方法,但我想知道我们是否可以仅通过配置文件更改基本 url 而无需自定义管道

【问题讨论】:

    标签: sitecore sitecore8 sitecore-mvc


    【解决方案1】:

    我看了看,我想我知道了——虽然我还没有测试过。

    它会查找名为Sitecore.Services.RouteBase 的设置,如果找不到,它会使用sitecore/api/ssc/ 作为默认值。

    您应该可以在App_Config/Include 文件夹中使用这样的配置补丁来更改它:

    <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
      <sitecore>
        <settings>
          <setting name="Sitecore.Services.RouteBase" value="custom/api/" />
        </settings>
      </sitecore>
    </configuration>
    

    【讨论】:

    • 这看起来正是我想要的。但是我刚才尝试了这个,默认或自定义 URL 都不起作用。两者都返回 404 错误。也许我可以深入研究相关对象,但是这个逻辑是在哪个 dll 或类中设置的?
    • Sitecore.Services.Infrastructure.Web.Http.DefaultRouteMapper 设置路由。 RouteBase 设置在 Sitecore.Services.Infrastructure.Sitecore.Configuration.ServicesSettingsConfigurationProvider 中。这些设置在Sitecore.Services.Infrastructure.Sitecore.Globals 中定义。这些存在于Sitecore.Services.Infrastructure.dllSitecore.Services.Infrastructure.Sitecore.dll
    • 是的,我现在正在研究这些 dll,你是对的。我可以更改“api”或“ssc”,但它仍然有效。但是,当我在“sitecore/api/ssc/”中更改“sitecore”一词时,我猜该请求不会到达这些 dll 并在其他地方停止;好像其他一些绕过服务 api 的过程的代码对“sitecore”作为常量很敏感。我在 web.config 中检查了“IgnoreUrlPrefixes”,但没有找到任何线索。我不确定这是一个错误还是我的项目特别搞砸了。
    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 2013-10-11
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多