Thursday, March 14, 2013

SharePoint 2010 - Access Denied for Site Administrator - WTF

This could happen to anyone with claims authentication and the reason is 
By default, the Portal Super User account is the site’s System Account, and the Portal Super Reader account is NT Authority\Local Service.

(replace the domain\superuser and domain\superreader to the accounts set in CA for your Farm)


The domain\superuser account needs to have a User Policy set for that gives it Full Control to the entire web application. In order to do this you perform the following steps:


  1. Go to Central Administration
  2. Go to Application Management
  3. Go to Manage Web Application
  4. Select the web application we’re talking about
  5. Click User Policy
  6. Add Users
  7. Click Next
  8. Fill in domain\superuser
  9. Select Full Control
  10. Click OK

The domain\superreader account needs to have a User Policy set for that gives it Full Read to the entire web application. In order to do this you perform the following steps:


  1. Go to Central Administration
  2. Go to Application Management
  3. Go to Manage Web Application
  4. Select the web application we’re talking about
  5. Click User Policy
  6. Add Users
  7. Click Next
  8. Fill in domain\superreader
  9. Select Full Read
  10. Click OK

If your web application is using claims based authentication the users should be displayed like i:0#.w|domain\superuser and i:0#w|domain\superreader. 



Run the following to check the current configuration

$wa = Get-SPWebApplication "[YourWebAppHereBaby]"
$wa.Properties["portalsuperuseraccount"] 
$wa.Properties["portalsuperreaderaccount"]



If you are using classic mode authentication run the following cmdlets on one of your SharePoint servers:
If you don't know what type of authentication is being used for your Farm, you don't have the skills to proceed further.


$wa = Get-SPWebApplication "[YourWebAppHereBaby]"
$wa.Properties["portalsuperuseraccount"] = "domain\superuser"
$wa.Properties["portalsuperreaderaccount"] = "domain\superreader"
$wa.Update()

If you are using claims based authentication run the following from SharePoint PowerShell:
If you don't know what type of authentication is being used for your Farm, you don't have the skills to proceed further.
(replacing the domain\superuser and domain\superreader to the accounts set in CA for your Farm)

$wa = Get-SPWebApplication "[YourWebAppHereBaby]"
$wa.Properties["portalsuperuseraccount"] = "i:0#.w|domain\superuser"
$wa.Properties["portalsuperreaderaccount"] = "i:0#.w|domain\superreader"
$wa.Update()

Tuesday, March 12, 2013

Exception: System.Security.Cryptography.CryptographicException

Tired of seeing the "Exception: System.Security.Cryptography.CryptographicException" in SharePoint 2010 on Windows 2008(/R2) Server


An unhandled exception ('System.Security.Cryptography.CryptographicException') occurred in OWSTIMER.EXE [23248]. Just-In-Time debugging this exception failed with the following error: Debugger could not be started because no user is logged on...

Simply open the regedit.exe (registry editor) to delete the following registry keys:
  1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger
  3. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
  4. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger

Wednesday, August 3, 2011

MOSS 2007 – WSS 3.0 Version / Build Numbers

12.0.0.6529 : MOSS 2007 – WSS 3.0 Feb 2010 Cumulative update
12.0.0.6524 : MOSS 2007 – WSS 3.0 Dec 2009 Cumulative update
12.0.0.6520 : MOSS 2007 – WSS 3.0 Oct 2009 Cumulative update
12.0.0.6414 : MOSS 2007 – WSS 3.0 Aug 2009 Cumulative update
12.0.0.6510 : MOSS 2007 – WSS 3.0 June 2009 Cumulative update
12.0.0.6504 : MOSS 2007 – WSS 3.0 April 2009 Cumulative update
12.0.0.6421 : MOSS 2007 – WSS 3.0 Service Pack 2
12.0.0.6341 : MOSS 2007 – WSS 3.0 Feb 2009 Cumulative update
12.0.0.6327 : MOSS 2007 – WSS 3.0 Aug 2008 Cumulative update
12.0.0.6318 : MOSS 2007 – WSS 3.0 Infrastructure Update
12.0.0.6303 : MOSS 2007 – WSS 3.0 post-SP1 hotfix
12.0.0.6301 : MOSS 2007 – WSS 3.0 post-SP1 hotfix
12.0.0.6300 : MOSS 2007 – WSS 3.0 post-SP1 hotfix
12.0.0.6219 : MOSS 2007 – WSS 3.0 SP1
12.0.0.6039 : MOSS 2007 – WSS 3.0 October public update
12.0.0.6036 : MOSS 2007 – WSS 3.0 August 24, 2007 hotfix package
12.0.0.4518 : MOSS 2007 – WSS 3.0 RTM
12.0.0.4407 : MOSS 2007 – WSS 3.0 Beta 2 TR
12.0.0.4017 : MOSS 2007 – WSS 3.0 Beta 2

Monday, June 6, 2011

Get SPUser object from SharePoint List Item People/Group picker field

The code below is to get SPUser from a multiple user item column 
 
 
            string strURL = "http://YourSite/";
            using (SPSite oSPSite = new SPSite(strURL))
            {
                using (SPWeb oSPWeb = oSPSite.OpenWeb())
                {

                    SPList list = oSPWeb.GetList(strURL);
                    SPListItemCollection items = list.Items;
                    foreach (SPListItem oListItem in items)
                    {
                        if (oListItem["Title"].ToString() == "Test")
                        {
                            String usersString = oListItem["Audience Group"].ToString();
                            SPFieldUserValueCollection userValueColl = new SPFieldUserValueCollection(oSPWeb, usersString);

                            foreach (SPFieldUserValue userValue in userValueColl)
                            {
                                SPUser siteUser = userValue.User;
                                Console.WriteLine("User found: {0}", siteUser.Name);
                            }
                            break;
                        }
                    }
                }

Thursday, April 7, 2011

Attaching an event handler to a specific SharePoint List

When we attach an event handler through Features in SharePoint using “ListTypeId”, it attaches event handlers to all the lists of that particular type. This will result in a large performance hit. To execute the written code for a particular list we will have to check either with ListId or ContentTypeId.
So, here is a way of attaching an event handler to a specific list on “FeatureActivated” and to remove the event handler from the list on “FeatureDeactivating”. This is the best method I can find as of now for attaching and removing the event handler to a specific SharePoint List.

const string assembly = "ListItemPermissions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5";
const string listReceiverName = "ListItemPermissions.ListItemPermissionsItemEventReceiver";
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
try
{
// get a reference to the current SPWeb
SPWeb _SPWeb = SPContext.Current.Web;
_SPWeb.AllowUnsafeUpdates = true;
// get a reference to the "Projects" list
SPList _projectsList = (SPList)_SPWeb.Lists["Projects"];

// if the "projectsList" list exists
if (_projectsList != null)
{
// create an empty Guid
Guid _ItemUpdatedGuid = Guid.Empty;
Guid _ItemAddedGuid = Guid.Empty;

// enumerate thru all of the event receiver definitions, attempting to
// locate the one we are adding
foreach (SPEventReceiverDefinition _SPEventReceiverDefinition in _projectsList.EventReceivers)
{
// if we find the event receiver we are about to add
// record its Guid
if (_SPEventReceiverDefinition.Type == SPEventReceiverType.ItemUpdated &&
_SPEventReceiverDefinition.Assembly == assembly &&
_SPEventReceiverDefinition.Class == listReceiverName)
{
_ItemUpdatedGuid = _SPEventReceiverDefinition.Id;
}

if (_SPEventReceiverDefinition.Type == SPEventReceiverType.ItemAdded &&
_SPEventReceiverDefinition.Assembly == assembly &&
_SPEventReceiverDefinition.Class == listReceiverName)
{
_ItemAddedGuid = _SPEventReceiverDefinition.Id;
}
}

// if we did not find the event receiver we are adding, add it
if (_ItemUpdatedGuid == Guid.Empty)
{
_projectsList.EventReceivers.Add(SPEventReceiverType.ItemUpdated, assembly, listReceiverName);
}
if (_ItemAddedGuid == Guid.Empty)
{
_projectsList.EventReceivers.Add(SPEventReceiverType.ItemAdded, assembly, listReceiverName);
}

_projectsList.Update();
_SPWeb.Update();
_SPWeb.AllowUnsafeUpdates = false;
}
}

catch (System.Exception ex)
{
PortalLog.LogString(ex.StackTrace);
throw new SPException(ex.Message);
}
}

public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
try
{
SPWeb _SPWeb = SPContext.Current.Web;
_SPWeb.AllowUnsafeUpdates = true;
// get a reference to the "Projects" list
SPList _projectsList = (SPList)_SPWeb.Lists["Projects"];
while(_projectsList.EventReceivers.Count > 0)
{
if (_projectsList.EventReceivers[_projectsList.EventReceivers.Count-1].Assembly.Equals(assembly))
{
_projectsList.EventReceivers[_projectsList.EventReceivers.Count-1].Delete();
}
} // looping thru event receivers.

_projectsList.Update();
_SPWeb.Update();
_SPWeb.AllowUnsafeUpdates = false;
}
catch (System.Exception ex)
{
PortalLog.LogString(ex.StackTrace);
throw new SPException(ex.Message);
}
}

Friday, March 4, 2011

Moss 2007 - Excel Services no file permissions message

 If you receive the following Exception when you try to open the sample workbook or another workbook try the following steps:

You do not have permissions to open this file on Excel Services.Make sure that the file is in an Excel Services trusted location and that you have access to the file.

1.Open Central Administration -> go to Operations tab -Ensure that the Excel Service is running.
2.Open Central Administration -> go to your configured Shared Service -> click Excel Service Settings.

-File Access Method: ensure that it is not using Impersonation, instead the Option Process Account should be enabled.

3. Open Central Administration -> go to your configured Shared Service -> click add new trusted file location
-Field URL: here you can specify a report library or the whole portal
-Location Type: should be Windows SharePoint Services
-Children trusted: defines whether the children should also be trusted or only the definied path