SharePoint 2010部署WCF续 - feature event receiver实现自动部署
2010-04-16 10:59
405 查看
在上篇文章里,有部署在sharepoint2010上部署WCF的过程,现实现自动化部署,不手工参与web.config的修改。
并增加了另外一个WCF。
1. 为工程添加一个feature(修改feature name & scope)
2. 添加feature event receiver
3. 在receiver类中添加下图所示helper elements
#region web.config modification
private struct ModificationEntry {
public string Name;
public string XPath;
public string Value;
public SPWebConfigModification.SPWebConfigModificationType ModType;
// parameterized contructor
public ModificationEntry(string Name, string XPath, string Value, SPWebConfigModification.SPWebConfigModificationType
ModType)
// intialize structure instances
this.Name = Name;
this.XPath = XPath;
this.Value = Value;
this.ModType = ModType;
#region
construct the wcf configuration content by using ModificationEntry class
private ModificationEntry
[] Entries = {
new ModificationEntry
(
"add[@name='WCFDeployment']"
,
"configuration/system.serviceModel"
,
【get the WCF configuration information from app.config】
,
SPWebConfigModification.SPWebConfigModificationType
.EnsureChildNode)
private SPWebConfigModification CreateModification(ModificationEntry
modEntry)
SPWebConfigModification
modification;
modification =
new SPWebConfigModification
(modEntry.Name, modEntry.XPath);
modification.Owner =
"test"
;
return
modification;
private void AddModifications(SPWebApplication
webApp)
foreach (ModificationEntry modEntry in
Entries)
private void RemoveModifications(SPWebApplication
webApp)
foreach (ModificationEntry modEntry in
Entries)
4. override 2个方法:
public override void FeatureActivated(SPFeatureReceiverProperties
properties)
{
SPSite site = (SPSite)properties.Feature.Parent;
SPWebApplication WebApp = site.WebApplication;
AddModifications(WebApp);
}
// Uncomment the method below to handle the event raised before a feature is deactivated.
public override void FeatureDeactivating(SPFeatureReceiverProperties
properties)
{
SPSite site = (SPSite)properties.Feature.Parent;
SPWebApplication WebApp = (SPWebApplication)site.WebApplication;
RemoveModifications(WebApp);
}
5. 部署,搞定!
注意问题:
千万别忘了修改这个标签的内容(从app.config中拷贝出来的时候,app.config中的是wcf的server)。
<add baseAddress=""http://localhost/_layouts/WCFDeployment/SecondWCF/"" />
发现了个问题: redeploy 的时候居然原来添加的节点删除不掉? 有知道的告诉我生
// Uncomment the method below to handle the event raised after a feature has been activated.
#endregion
{
webApp.WebConfigModifications.Remove(CreateModification(modEntry));
}
webApp.WebService.ApplyWebConfigModifications();
}
{
{
webApp.WebConfigModifications.Add(CreateModification(modEntry));
}
webApp.WebService.ApplyWebConfigModifications();
}
{
}
modification.Sequence = 0;
modification.Type = modEntry.ModType;
modification.Value = modEntry.Value;
{
#endregion
};
}
}
{
并增加了另外一个WCF。
1. 为工程添加一个feature(修改feature name & scope)
2. 添加feature event receiver
3. 在receiver类中添加下图所示helper elements
#region web.config modification
private struct ModificationEntry {
public string Name;
public string XPath;
public string Value;
public SPWebConfigModification.SPWebConfigModificationType ModType;
// parameterized contructor
public ModificationEntry(string Name, string XPath, string Value, SPWebConfigModification.SPWebConfigModificationType
ModType)
// intialize structure instances
this.Name = Name;
this.XPath = XPath;
this.Value = Value;
this.ModType = ModType;
#region
construct the wcf configuration content by using ModificationEntry class
private ModificationEntry
[] Entries = {
new ModificationEntry
(
"add[@name='WCFDeployment']"
,
"configuration/system.serviceModel"
,
【get the WCF configuration information from app.config】
,
SPWebConfigModification.SPWebConfigModificationType
.EnsureChildNode)
private SPWebConfigModification CreateModification(ModificationEntry
modEntry)
SPWebConfigModification
modification;
modification =
new SPWebConfigModification
(modEntry.Name, modEntry.XPath);
modification.Owner =
"test"
;
return
modification;
private void AddModifications(SPWebApplication
webApp)
foreach (ModificationEntry modEntry in
Entries)
private void RemoveModifications(SPWebApplication
webApp)
foreach (ModificationEntry modEntry in
Entries)
4. override 2个方法:
public override void FeatureActivated(SPFeatureReceiverProperties
properties)
{
SPSite site = (SPSite)properties.Feature.Parent;
SPWebApplication WebApp = site.WebApplication;
AddModifications(WebApp);
}
// Uncomment the method below to handle the event raised before a feature is deactivated.
public override void FeatureDeactivating(SPFeatureReceiverProperties
properties)
{
SPSite site = (SPSite)properties.Feature.Parent;
SPWebApplication WebApp = (SPWebApplication)site.WebApplication;
RemoveModifications(WebApp);
}
5. 部署,搞定!
注意问题:
千万别忘了修改这个标签的内容(从app.config中拷贝出来的时候,app.config中的是wcf的server)。
<add baseAddress=""http://localhost/_layouts/WCFDeployment/SecondWCF/"" />
发现了个问题: redeploy 的时候居然原来添加的节点删除不掉? 有知道的告诉我生
// Uncomment the method below to handle the event raised after a feature has been activated.
#endregion
{
webApp.WebConfigModifications.Remove(CreateModification(modEntry));
}
webApp.WebService.ApplyWebConfigModifications();
}
{
{
webApp.WebConfigModifications.Add(CreateModification(modEntry));
}
webApp.WebService.ApplyWebConfigModifications();
}
{
}
modification.Sequence = 0;
modification.Type = modEntry.ModType;
modification.Value = modEntry.Value;
{
#endregion
};
}
}
{
相关文章推荐
- SharePoint 2010中, SPEventReceiverBase.EnableEventFiring和DisableEventFiring都已废弃(obsolete), 应使用SPEventReceiverBase.EventFiringEnabled
- Sharepoint 2010 使用feature部署文件
- sharepoint 2010中通过命令部署和卸载FEATURE
- SharePoint 2010之部署WCF
- Sharepoint 2010 Event 部署注意事项
- SharePoint 2010之部署WCF(deploy WCF service to SharePoint 2010 via VS 2010 step by step)
- 【大话QT之十三】系统软件自动部署实现方案
- 自动化运维工具SaltStack详细部署及用SaltStack实现自动部署lamp架构
- 在SharePoint 2010中部署RBS (转)
- 用Ant实现Java项目的自动构建和部署
- git码云配置web hook钩子实现自动部署,git权限等问题,LAMP
- 用Ant实现Java项目的自动构建和部署
- 用Ant实现Java项目的自动构建和部署
- WCF:在 WCF Web 服务和 SharePoint 2010 安全令牌服务之间建立信任关系(第 3 部分,共 4 部分)
- sharepoint 2010中部署webpart
- SharePoint:扩展DVWP - 第23部分:工作流实现基于其他字段自动创建标题
- 部署 AppGlobalResources 到 SharePoint 2010
- Sharepoint 2010 自定义feature的图标
- 使用maven的tomcat插件实现webapp的自动部署
- 用python脚本实现自动部署环境(一)