更改SharePoint 的web.config設置的兩種方式
MSDN上寫的不是很明白,自己測試通過,記錄一下:
方法一:通過創建描述一組 Web.config 修改的 XML 文件以聲明方式注冊 Web.config 項。
備注:
直接寫一個webconfig.**.xml到14文件夾下的CONFIG中,在運行stsadm -o copyappbincontent 效果是一樣的;
方法一有個缺點,會把所有WebApplication的web.Config都修改掉;
1.在sharepoint解決方案里添加14文件夾下的CONFIG文件夾,新建webconfig.**.xml文件(本文中使用的是webconfig.rj.xml),編輯內容;
2.修改解決方案包,如下;
3.添加后期部署命令行,如果解決方案里沒有這一步,也可以直接在cmd中直接運行;
"C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Bin\stsadm.exe" -o copyappbincontent
方法二:使用 SharePoint Foundation 對象模型來修改 Web.config 設置
備注:
2011-01-06:不能在site scope feature使用的原因找到了,是因為 SPWebService.RemoteAdministratorAccessDenied默認為TRUE,將下表中的腳本保存為Set-RemoteAdministratorAccessDenied-False.ps,以管理員身份運行后IISreset,就OK了;
參考:http://unclepaul84.blogspot.com/2010/06/sppersistedobject-xxxxxxxxxxx-could-not.html (過墻)
# CONTACT: unclepaul84@gmail.com
# DESCRIPTION: sets an option on content web service that allows updating of SP Administration objects such as SPJobDefinition from content web applications
function Set-RemoteAdministratorAccessDenied-False()
{
# load sharepoint api libs
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Administration") > $null
# get content web service
$contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
# turn off remote administration security
$contentService.RemoteAdministratorAccessDenied = $false
# update the web service
$contentService.Update()
}
Set-RemoteAdministratorAccessDenied-False
缺點是如果上級節點不存在,就沒有辦法添加SPWebConfigModification實例:比如要在"configuration/connectionStrings"下添加一個"<add name='tongji' connectionString='(請自行修改)Data Source=(loca…….",因為wenconfig默認不存在"configuration/connectionStrings"節點,所以部署時會報錯;
2.參考一下URL編寫代碼