Accès refusé lors de l'activation des fonctionnalités implémentant SPFeatureReceiver ?
-
09-12-2019 - |
Question
Nous avons développé plusieurs fonctionnalités qui implémentent l'interface SPFeatureReceiver.En essayant cela dans l'environnement de développement, cela a d'abord échoué jusqu'à ce que je trouve ce script du MSDN:
function Set-RemoteAdministratorAccessDenied-False()
{
[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
$contentService.Update()
}
Set-RemoteAdministratorAccessDenied-False
Après avoir exécuté le script et réinitialisé IIS, tout a bien fonctionné lors du développement et nous avons pu activer la fonctionnalité (en tant qu'administrateur de ferme) dans Site Settings > Manage Site Features
avec la portée définie sur Site http://mysolution/_layouts/ManageFeatures.aspx?Scope=Site.Après l'activation, nous avons à nouveau inversé la propriété RemoteAdministratorAccessDenied sur true et avons effectué une nouvelle IISRESET
.
Sur le serveur de production, nous avons utilisé la même procédure après déploiement de la fonctionnalité :
- Définissez RemoteAdministratorAccessDenied sur false
- IISRESET et j'ai essayé d'activer la fonctionnalité, mais cela a échoué.
Le message d'erreur que nous avons reçu est le suivant :
Server Error in '/' Application.
--------------------------------------------------------------------------------
Security Exception
Description: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.
Exception Details: System.Security.SecurityException: Access Denied.
Source Error:
The source code that generated this unhandled exception can only be shown when compiled in debug mode. To enable this, please follow one of the below steps, then request the URL:
1. Add a "Debug=true" directive at the top of the file that generated the error. Example:
<%@ Page Language="C#" Debug="true" %>
or:
2) Add the following section to the configuration file of your application:
<configuration>
<system.web>
<compilation debug="true"/>
</system.web>
</configuration>
Note that this second technique will cause all files within a given application to be compiled in debug mode. The first technique will cause only that particular file to be compiled in debug mode.
Important: Running applications in debug mode does incur a memory/performance overhead. You should make sure that an application has debugging disabled before deploying into production scenario.
Stack Trace:
[SecurityException: Access Denied.]
Microsoft.SharePoint.Administration.SPPersistedObject.BaseUpdate() +27451643
Microsoft.SharePoint.Administration.SPJobDefinition.Update() +152
Company.IssueTracker.Features.NewIssueTimerJob.NewIssueTimerJobEventReceiver.FeatureActivated(SPFeatureReceiverProperties properties) +837
Microsoft.SharePoint.SPFeature.DoActivationCallout(Boolean fActivate, Boolean fForce) +25671814
Microsoft.SharePoint.SPFeature.Activate(SPSite siteParent, SPWeb webParent, SPFeaturePropertyCollection props, Boolean fForce) +25676799
Microsoft.SharePoint.SPFeatureCollection.AddInternal(SPFeatureDefinition featdef, Version version, SPFeaturePropertyCollection properties, Boolean force, Boolean fMarkOnly) +27776095
Microsoft.SharePoint.SPFeatureCollection.AddInternalWithName(Guid featureId, String featureName, Version version, SPFeaturePropertyCollection properties, Boolean force, Boolean fMarkOnly, SPFeatureDefinitionScope featdefScope) +150
Microsoft.SharePoint.SPFeatureCollection.Add(Guid featureId, Boolean force, SPFeatureDefinitionScope featdefScope) +83
Microsoft.SharePoint.WebControls.FeatureActivator.ActivateFeature(Guid featid, SPFeatureDefinitionScope featdefScope) +699
Microsoft.SharePoint.WebControls.FeatureActivatorItem.BtnActivateFeature_Click(Object objSender, EventArgs evtargs) +140
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +115
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +140
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +29
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +11058199
System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +11057738
System.Web.UI.Page.ProcessRequest() +91
System.Web.UI.Page.ProcessRequest(HttpContext context) +240
ASP._layouts_managefeatures_aspx.ProcessRequest(HttpContext context) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +599
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.4963; ASP.NET Version:2.0.50727.4971
Mon environnement :Serveur SharePoint 2010
Questions connexes dans SharePoint 2007 :
La solution
Si les blogs que C. lié à ne vous aident pas, j'essaierais d'essayer de rendre la fonctionnalité WebApplication Scoped, qui est probablement la bonne chose que vous ajoutez une nouvelle TimerJob.
Je suppose que, dans l'incitation, vous supprimez à nouveau le travail.Dans ce cas, vous aurez un problème si une personne active la fonctionnalité de deux bandes, puis retirez-la de l'une d'elles.
Autres conseils
Je crois que votre problème est déjà abordé ici? Récepteur d'événements Featureactivé donnant accès refusé en essayantAlors définissez la propriété webapplication et le problème est expliqué plus en détail ici http://blog.bugrapostaci.com/tag/remoeadministratorAccess initial/
J'espère que cela aide, C: \ marius