我们在发布渠道中有一个奇怪的问题。我们有一些逻辑在发布管道期间运行以将数据写入另一个系统。进入新系统的数据属性之一是内容和媒体项的URL。
项目的网址为http://www.example.com/section/abc,但媒体项目的网址为http://123.456.789.012/~/media/media.ashx。这适用于我们的舞台和开发环境,正确的网址经过。但在生产中,IP正在发送给媒体项目。我可以说,在分期和生产配置上没有明显的差异。
有关可能发生的事情的任何想法?任何帮助表示赞赏。
答案 0 :(得分:5)
检查"Media.MediaLinkServerUrl"
设置的值是多少。
默认情况下为空:
<setting name="Media.MediaLinkServerUrl" value="" />
根据我的记忆,如果:
"Media.MediaLinkServerUrl"
未设置值AlwaysIncludeServerUrl
选项HttpContext.Current
(当您在发布管道时这是真的)如果1. 2.和3.为真,则Sitecore会生成指向媒体项目的链接,其中第一个主机名或IP地址是在应用程序池被回收后被点击的。
这意味着如果您重新启动生产服务器,然后使用本地IP地址命中它,只是为了确保它已经启动并运行,然后再将其放回负载均衡器(或者可能是使用IP地址调用服务器的LB),Sitecore将使用该IP地址生成所有媒体项目URL而不是好的主机名。
我认为它在dev和staging环境中都有效,因为你总是用最终的主机名命中它们。