Kan skrap nie kanselleer in Lys Item gebeurtenis ontvanger ItemDeleting metode in CMSPUBLISHINGSITE # 2

StackOverflow https://stackoverflow.com/questions/2403829

  •  18-09-2019
  •  | 
  •  

Vra

Die gebruik van die SharePoint 2010 RC Ek het probleme kanselleer die skrapping van 'n lys item behulp gebeurtenis ontvangers. My kode is 'n vuur, die opstel van die kanselleer eiendom van die SPItemEventProperties, die opstel van 'n fout boodskap, en gooi 'n fout terug na die roeping draad. Hierdie benadering werk goed in die toevoeging van / opdatering metodes egter wanneer dit gebruik word in die verwydering metode wat ek kan kyk na die kode vuur in 'n debugger, maar die item is nog verskuif na die webwerf se recycle bin.

Verder sien ek hierdie gedrag in 'n webwerf geskep uit die "CMSPUBLISHINGSITE # 2" template van stsadm, maar nie van 'n webwerf geskep uit die "Team Site" template via Sentrale Administrasie.

Die hang-kode volg:

public override void ItemDeleting(SPItemEventProperties properties)
{
    if (!(properties.UserLoginName == "SHAREPOINT\\system"))
    {
        try
        {
            throw new CreatorIdAliasingException("Please contact support if you feel a release web site has been inappropriately assigned to your organization.");
        }
        catch (CreatorIdAliasingException ex)
        {
            properties.Cancel = true;
            properties.ErrorMessage = ex.ToString();
            properties.InvalidateListItem();
            throw;
        }
    }
}

Vir verwysing, identies kode vervat in die ItemAdding metode en werk as wat verwag is.

public override void ItemAdding(SPItemEventProperties properties)
        {
            base.ItemAdding(properties);
            if (!(properties.UserLoginName == "SHAREPOINT\\system"))
            {
                try
                {
                    throw new InvalidCreatorIdException("Please contact support to add a known URL to your list of release web sites.");
                }
                catch (InvalidCreatorIdException ex)
                {
                    properties.Cancel = true;
                    properties.ErrorMessage = ex.ToString();
                    properties.InvalidateListItem();
                    throw;
                }
            }
        }
Was dit nuttig?

Oplossing

Ek sou jy aanbeveel om nie die gebruik van uitsonderings as deel van jou besigheid logika. Uitsonderings is duur en moet slegs gebruik word in uitsonderlike gevalle wat nie hanteer word deur normale logika.
In plaas daarvan, gebruik iets soos hierdie:

public override void ItemDeleting(SPItemEventProperties properties)
{
  if (properties.UserLoginName.ToLower().CompareTo("sharepoint\\system") != 0)
  {
    properties.Cancel = true;
    properties.ErrorMessage = "Some error has occured....";
  }
}

En, by the way, jy gooi 'n bykomende uitsondering binne die event handler wat waarskynlik die rede dat jy sien hierdie gedrag wat jy ervaar.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top