我目前正在开发一个Sitecore项目,其中相同的sitecore webapplication将指向基于web应用程序运行的女巫IIS网站名称的Sitecore数据库。
假设IIS webapplication名为www.company1.com,则数据库名称为:www.company1.com.master,www.company1.com.web位于\ App_Config \ ConnectionStrings.config。
我曾尝试修改 Application_Start()上的连接字符串,但这不是最佳解决方案(可能但是速度慢且难看,首先请求丢弃等)。
另一种方法是使用配置文件转换,但这不是基于网站数量的选项。
是否可以在 Application_Start 中的某处修改Sitecore.Context,以便Sitecore.Context.Database按预期工作?
答案 0 :(得分:3)
您可以设置多个连接字符串条目,然后在web.config中的节点中引用它。
<connectionStrings>
<add name="core" connectionString="[connection_string]" />
<add name="master" connectionString="[connection_string]" />
<add name="web" connectionString="[connection_string]" />
<add name="web1" connectionString="[connection_string]" />
<add name="web2" connectionString="[connection_string]" />
</connectionStrings>
<sites>
<site name="website1" database="web1" hostName="www.company1.com" (...) />
<site name="website2" database="web2" hostName="www.company2.com" (...) />
</sites>
这会对你有用吗?
答案 1 :(得分:0)
我认为没有。但是您不希望更改连接字符串的实际名称,您可能希望更改它生成的值。更改标准Sitecore连接字符串名称(“master”,“core”和“web”)将需要web.config和相关配置文件中的许多相关更改。最重要的是你可能会遇到麻烦,因为那里还有模块和代码 - 执行特定的Factory.GetDatabase(“master”)API调用 - 即使他们不应该这样做。
我从未在Sitecore解决方案中尝试过您所要求的内容,但我希望可以创建您自己的ConnectionStringProvider,如http://msdn.microsoft.com/en-us/library/vstudio/ms254494(v=vs.100).aspx
中所述提供者需要返回“master”,“core”等的正确结果 - 您通常在解决方案中定义的任何数据库 - 然后根据您描述的模式生成动态连接字符串;考虑IIS应用程序名称或您需要的任何名称。