Frage

Ich habe einen Webdienst und eine benutzerdefinierte Protokollierungsdienstklasse.Die Protokollierungsklasse verfügt über eine Funktion, die sich entsprechend den Funktionsereignissen selbst aktualisiert oder entfernt (Activated=SPService.Update, Deactivating=SPService.Delete).

Kann ich den Webdienst hinzufügen oder entfernen, während die Funktion aktiviert/deaktiviert wird?

War es hilfreich?

Lösung

Das Hinzufügen und Entfernen von Webdiensten wird nicht empfohlen und ich glaube nicht, dass dies möglich ist!Sie haben die Dateien im ISAPI-Ordner, wie DrFeelgood bemerkt hat!in der ISAPI enthält die WSDL- und Disco-Dateien.

Aber....ein großes aber...Sie benötigen außerdem den Webservice im GAC-Ordner (Assembly).Das heißt, wenn Sie den Webservice so ändern möchten, dass er Methoden/Entfernen enthält, müssen Sie die DLL ändern.

Das bewegt mich zum Projekt. Wenn Sie in Ihrem Projekt auf den Webservice verweisen, müssten Sie ihn jedes Mal aktualisieren, wenn Sie ihn hinzufügen/entfernen.

Die kurze Antwort lautet also: Nein, naja, nicht, dass ich es wüsste ;)

Wie von DrFeelgood angegeben, müssen Sie Ihre DLL zu GAC hinzufügen, Disco und WSDL zum ISAPI-Ordner für die Erkennung (_VTI_Bin) hinzufügen, eine Webreferenz zu Ihrem Projekt hinzufügen und beim Aktivieren/Deaktivieren die von Ihnen benötigte Methode entsprechend verwenden!

Gibt es einen Grund, warum Sie es so machen wollen?

BEARBEITEN

Ok, das macht Sinn!

In Ihrer Methode im Webservice müssen Sie nach der Funktion suchen und prüfen, ob sie aktiv oder deaktiviert ist. Wenn sie aktiv (wahr) ist, machen Sie weiter und geben Sie das Ergebnis zurück. Andernfalls geben Sie false zurück, wenn die Funktion deaktiviert ist!

Hiermit wird überprüft, ob die Funktion aktiv ist!

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/programmatically-determine-is-a-feature-is-activated-or-even-installed/

Diese Methode ist besser und weniger aufwändig / eine Methode, die ich empfehlen würde!

Andere Tipps

Welche SharePoint-Version verwenden Sie?Möglicherweise habe ich einige alte Lösungen bereitgestellt, bei denen es sich um SharePoint-Webdienste handelte, die ich als Referenz verwenden kann, um zu helfen.Soweit ich mich erinnere, müssen Sie SharePoint 2010 lediglich im ISAPI-Ordner bereitstellen und sollten es in Ihrem Code aufrufen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top