在c#中构建Sitecore连接字符串

时间:2014-02-25 12:18:39

标签: c# sitecore connection-string

我目前正在开发一个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按预期工作?

2 个答案:

答案 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应用程序名称或您需要的任何名称。