Для регистрации своего VirtualPathProvider из Feature activation на понадобиться собственно какая нибудь фича, желательно со scope="WebApplication"
Выглядит это так:
Выглядит это так:
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
namespace QpmWcfSupport
{
public class FeatureActivation : SPFeatureReceiver
{
#region Private Members
SPWebApplication _chosenWebApp = null;
#endregion
#region Implementation Of SPFeatureReceiver
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
Init(properties);
WcfSupport(true);
}
public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
Init(properties);
WcfSupport(false);
}
public override void FeatureInstalled(SPFeatureReceiverProperties properties)
{
}
public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
{
}
#endregion
#region Private Methods
private void Init(SPFeatureReceiverProperties properties)
{
SPFeature feature = properties.Feature;
SPSite siteCollection = properties.Feature.Parent as SPSite;
if (siteCollection == null)
{
SPWeb web = properties.Feature.Parent as SPWeb;
if (web != null)
_chosenWebApp = web.Site.WebApplication;
else
_chosenWebApp = properties.Feature.Parent as SPWebApplication;
}
else
_chosenWebApp = siteCollection.WebApplication;
}
private void WcfSupport(bool add)
{
ModifcationEntry wcfEntry = GetWCFSupportEntry();
SPWebConfigModification modification = CreateModification(wcfEntry);
if (add)
{
this._chosenWebApp.WebConfigModifications.Add(modification);
}
else
{
this._chosenWebApp.WebConfigModifications.Remove(modification);
}
this._chosenWebApp.Farm.Services.GetValue().ApplyWebConfigModifications();
this._chosenWebApp.Update();
}
private SPWebConfigModification CreateModification(ModifcationEntry modEntry)
{
SPWebConfigModification mod = new SPWebConfigModification(modEntry.Name, modEntry.Path);
mod.Owner = "MyCompany";
mod.Sequence = 0;
mod.Type = modEntry.ModType;
mod.Value = modEntry.Value;
return mod;
}
private ModifcationEntry GetWCFSupportEntry()
{
ModifcationEntry wcfEntry = new ModifcationEntry();
wcfEntry.Name = "add[@name='WCFSupport']";
wcfEntry.Path = "configuration/system.web/httpModules";
wcfEntry.Value = "";
wcfEntry.ModType = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
return wcfEntry;
}
#endregion
}
}