none
SharePoint 2016: Хочу удалить ссылку на несуществующую сборку. RRS feed

  • Вопрос

  • Добрый день.

    Довольно часто в Application log-е SharePoint Сервера появляется Warning: 

    Event manager error: Could not load file or assembly 'MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8d0ac824a79d7415' or one of its dependencies. The system cannot find the file specified.

    и 

    Event manager error: Could not load file or assembly 'MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=76e098698501df2a' or one of its dependencies. The system cannot find the file specified.

    Стал изучать вопрос дальше и нашел проблему в одном из EventReceiver-ов моего списка. Он ссылается на две несуществующме сборки. Дальше нашел и дописал скрипт который должен удалить ссылку:

    cls
    Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
      
    $webUrl = "http://sharepoint/projects/"
    $Web = get-spweb $webUrl
    
    #Get the Target List
    $List = $Web.Lists["Справочник проектов"] 
    
    $Assembly = "MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=76e098698501df2a"
    #$Assembly = "MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8d0ac824a79d7415"
    
    $EventReceivers = $list.EventReceivers | Where {$_.Assembly -eq $assembly}
     
    if ($EventReceivers) 
      {
         foreach($Receiver in $EventReceivers)
          {        
            #Write-Host "Deleting Event Receiver from " $list.RootFolder.ServerRelativeUrl
            Write-Host "Found failed receiver:" $Receiver.Name, $Receiver.Id
            #$Receiver.Delete()
            Write-Host "Deleted."
          }
      }
    
    

    На тестовом стенде такой проблемы нет. Удалять нечего. А на боевом есть. Скриптом проверил - ссылки находятся. Всё ок.

    Хотел спросить: могу ли я безболезненно их удалить, или могут возникнуть проблемы?

    Спасибо.

    23 января 2018 г. 6:06

Ответы

  • Добрый день.

    Довольно часто в Application log-е SharePoint Сервера появляется Warning: 

    Event manager error: Could not load file or assembly 'MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8d0ac824a79d7415' or one of its dependencies. The system cannot find the file specified.

    и 

    Event manager error: Could not load file or assembly 'MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=76e098698501df2a' or one of its dependencies. The system cannot find the file specified.

    Стал изучать вопрос дальше и нашел проблему в одном из EventReceiver-ов моего списка. Он ссылается на две несуществующме сборки. Дальше нашел и дописал скрипт который должен удалить ссылку:

    cls
    Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
      
    $webUrl = "http://sharepoint/projects/"
    $Web = get-spweb $webUrl
    
    #Get the Target List
    $List = $Web.Lists["Справочник проектов"] 
    
    $Assembly = "MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=76e098698501df2a"
    #$Assembly = "MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8d0ac824a79d7415"
    
    $EventReceivers = $list.EventReceivers | Where {$_.Assembly -eq $assembly}
     
    if ($EventReceivers) 
      {
         foreach($Receiver in $EventReceivers)
          {        
            #Write-Host "Deleting Event Receiver from " $list.RootFolder.ServerRelativeUrl
            Write-Host "Found failed receiver:" $Receiver.Name, $Receiver.Id
            #$Receiver.Delete()
            Write-Host "Deleted."
          }
      }
    

    На тестовом стенде такой проблемы нет. Удалять нечего. А на боевом есть. Скриптом проверил - ссылки находятся. Всё ок.

    Хотел спросить: могу ли я безболезненно их удалить, или могут возникнуть проблемы?

    Спасибо.

    В моем случае я удалял через SQL:

    Посмотреть связи в таблицах:

    SELECT * FROM EventReceivers where Assembly like '%MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8d0ac824a79d7415"
    %'

    Удалить:

    DELETE FROM EventReceivers where Assembly like '%MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8d0ac824a79d7415"
    %'
    23 января 2018 г. 7:11

Все ответы

  • Добрый день.

    Довольно часто в Application log-е SharePoint Сервера появляется Warning: 

    Event manager error: Could not load file or assembly 'MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8d0ac824a79d7415' or one of its dependencies. The system cannot find the file specified.

    и 

    Event manager error: Could not load file or assembly 'MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=76e098698501df2a' or one of its dependencies. The system cannot find the file specified.

    Стал изучать вопрос дальше и нашел проблему в одном из EventReceiver-ов моего списка. Он ссылается на две несуществующме сборки. Дальше нашел и дописал скрипт который должен удалить ссылку:

    cls
    Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
      
    $webUrl = "http://sharepoint/projects/"
    $Web = get-spweb $webUrl
    
    #Get the Target List
    $List = $Web.Lists["Справочник проектов"] 
    
    $Assembly = "MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=76e098698501df2a"
    #$Assembly = "MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8d0ac824a79d7415"
    
    $EventReceivers = $list.EventReceivers | Where {$_.Assembly -eq $assembly}
     
    if ($EventReceivers) 
      {
         foreach($Receiver in $EventReceivers)
          {        
            #Write-Host "Deleting Event Receiver from " $list.RootFolder.ServerRelativeUrl
            Write-Host "Found failed receiver:" $Receiver.Name, $Receiver.Id
            #$Receiver.Delete()
            Write-Host "Deleted."
          }
      }
    

    На тестовом стенде такой проблемы нет. Удалять нечего. А на боевом есть. Скриптом проверил - ссылки находятся. Всё ок.

    Хотел спросить: могу ли я безболезненно их удалить, или могут возникнуть проблемы?

    Спасибо.

    В моем случае я удалял через SQL:

    Посмотреть связи в таблицах:

    SELECT * FROM EventReceivers where Assembly like '%MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8d0ac824a79d7415"
    %'

    Удалить:

    DELETE FROM EventReceivers where Assembly like '%MyCompany.Sharepoint.PDS.EventResivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8d0ac824a79d7415"
    %'
    23 января 2018 г. 7:11
  • Спасибо попробую!
    Потом всё сразу же работает или что-то рестартить надо?
    23 января 2018 г. 7:13
  • Можешь попробовать и через Powershell, так:

    Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue
    $spWeb = Get-SPWeb -Identity "http://sharepoint/projects"
    $spWeb.AllowUnsafeUpdates = $true
    $spList = $spWeb.Lists["Справочник проектов"]
    $eventsCount = $spList.EventReceivers.Count
    $eventsCount
    $assembly = "<MyCompany.Sharepoint.PDS.EventResivers>"
    $class = "<MyCompany.Sharepoint.PDS.EventResivers>"
    for ($i = 0; $i -lt $eventsCount; $i+=1) 
    {    
    if ($spList.EventReceivers[$i].Assembly -eq $assembly -and $spList.EventReceivers[$i].Class -eq $class)    
    {       
    $spList.EventReceivers[$i]
    $spList.EventReceivers[$i].Delete()    
    } 
    }
    $spList.Update()
    23 января 2018 г. 7:16
  • Спасибо попробую!
    Потом всё сразу же работает или что-то рестартить надо?
    Обязательно.
    23 января 2018 г. 7:17
  • "Обязательно" ... рестартить? ))

    весь пул или службу таймера достаточно?

    23 января 2018 г. 7:20
  • "Обязательно" ... рестартить? ))

    весь пул или службу таймера достаточно?

    Службы таймера будет достаточно.
    23 января 2018 г. 7:22
  • Спасибо!
    23 января 2018 г. 7:23