Pergunta

Eu tenho um serviço web e uma classe de serviço de log personalizada.A classe de registro possui um recurso que se atualiza ou se remove de acordo com os eventos do recurso (Activated=SPService.Update, Deactivating=SPService.Delete).

Posso adicionar ou remover o serviço web conforme o recurso é ativado/desativado?

Foi útil?

Solução

Adicionar e remover webservice não é recomendado e não creio que seja possível!Você tem os arquivos na pasta ISAPI, conforme observou DrFeelgood!no ISAPI contém os arquivos wsdl e disco.

Mas....um grande mas..você também precisa do webservice na pasta GAC ​​(assembly).Isso significa que se você quiser alterar o serviço da web para conter métodos/remover, precisará alterar a dll.

Isso me leva ao projeto, no seu projeto, quando você fizer referência ao serviço da web, precisará atualizá-lo toda vez que adicionar/remover.

A resposta tão curta é não, bem, não que eu saiba;)

conforme declarado por DrFeelgood, você precisa adicionar sua dll ao GAC, adicionar disco e wsdl à pasta ISAPI para descoberta (_VTI_Bin), adicionar referência da web ao seu projeto e usar o método necessário de acordo ao ativar/desativar!

Existe alguma razão pela qual você quer fazer dessa maneira?

EDITAR

Ok, isso faz sentido!

no seu método dentro do webservice você precisa verificar o recurso e se está ativo ou desativado, se ativo (verdadeiro) continue e retorne o resultado, caso contrário retorne falso se o recurso estiver desativado!

Isso é para verificar se o recurso está ativo!

public static myCustomWebservicemethod()
{

     string guidStringFeature = "545646-56454-54665-56464";
     Guid guid = new Guid( guidStringFeature);
     using(SPSite site = new SPSite("url"))
     {
     if(IsFeatureActivated(site ,guid) == true)
     {
          //carry on with the webservice and return the value
          return true;
     }
     }

     //if its deactive than return false (nothing ;))
     return false;
}

public static bool IsFeatureActivated(this SPSite site, Guid featureId)    
{         
    return site.WebApplication.WebService.Fteaures[featureID] != null;    
}     

http://blogs.edwardwilde.com/2009/12/17/programmaticamente-determine-is-a-feature-is-activated-or-even-installed/

Este método é melhor e menos complicado/um método que eu recomendaria!

Outras dicas

Qual versão do SharePoint você está usando?Posso ter algumas soluções antigas que implantei que eram SharePoint Web Services que posso usar como referência para tentar ajudar.Pelo que me lembro do SharePoint 2010, tudo o que você faz é implantá-lo na pasta ISAPI e poderá chamá-lo em seu código.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top