SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Search Server programmatisch managen

Unbeantwortet Dieser Beitrag hat 7 Antworten

Ohne Rang
4 Beiträge
V S erstellt 21 Dez. 2010 09:01
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe SharePoint 2010 und Search Server Express 2010 aufgesetzt und soweit eingerichtet. Nun würde ich gern 2 eigene Webseiten einrichten/implementieren, über die andere den Search Server benutzen können: eine Suchseite und eine Seite, von der aus man eigene Content Sources hinzufügen kann.

1.) Die Suchseite ist fertig. Dafür konnte ich den Web Service Search.asmx nutzen, welcher eine Verbindung zum Search Server aufnimmt und zu einem bestimmten Suchbegriff Ergebnisse liefert.

2.) Das zweite kriege ich einfach nicht hin. Fürs Erste würde es mir reichen überhaupt eine Verbindung zum Search Server herstellen zu können. Ich habe bislang keinen Web Service finden können, der mir da weiterhelfen würde. Stattdessen ist in diesem Beispiel erklärt, wie man programmatisch genau das erreicht, was ich vorhabe. Es scheitert jedoch bereits bei Punkt 5. Da ich versuche von einem anderen Rechner auf den Search Server zuzugreifen und eine FileNotFoundException bekomme, scheint alles dafür zu sprechen, dass es sich dabei um folgendes Problem handelt (s. 2. Beitrag von Michael Washam). Dann frage ich mich aber: wenn ich das Ganze auf der Maschine implementiere, wo Search Server drauf läuft - wird es dann funktionieren, wenn man das Ganze später von einem anderen Rechner aus aufuft? Oder ist das ein ganz falscher Ansatz und man kann es irgendwie anders lösen?

Bin für jeden Vorschlag dankbar.

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 21 Dez. 2010 09:44
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Den administrativen Teil (Dein Punkt 2) kann man nur über das Objektmodell erreichen und dazu muß der Code auf dem Server ausgeführt werden. Du kannst damit natürlich einen eigenen Webservice oder WCF-Service bauen und den dann von einem entfernten Rechner aufrufen.

IMHO ist aber der Aufwand dafür viel zu groß. Gib denjenigen, die das nutzen sollen doch einfach Rechte auf die Service Application der Suche (in der Zentraladministration), dann können die das über die von MS bereitgestellte Oberfläche machen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
4 Beiträge
V S Als Antwort am 21 Dez. 2010 10:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Gut zu wissen - danke für die Info! Trotz des Aufwands würde ich es gern versuchen, das mit dem Webservice hinzukriegen. Dafür versuche ich das bereits vorhin verlinkte Beispiel nachzuprogrammieren. Da ich jetzt auf der richtigen Maschine drauf bin, klappt der Aufruf, der vorhin Probleme bereitet hat:

SPSite site = new SPSite(strURL);

Schritt 5 an sich klappt jedoch immer noch nicht, da der Beispielcode veraltet ist. Ich kann jedoch nirgends finden, wie es in Office 2010 richtig gehen soll. Kann mir da jemand weiterhelfen?

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 21 Dez. 2010 11:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe mir das Beispiel vorher nicht angesehen...

Das geht bei SharePoint 2010 komplett anders. Hinter der Suche steckt eine sog. Service Application (die gab es in 2007 nicht), aber wie Du eine Referenz darauf bekommst, kann ich Dir nicht sagen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
4 Beiträge
V S Als Antwort am 22 Dez. 2010 12:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich war wohl ein wenig zu voreilig. Der scheinbar alles entscheidende Aufruf

SPSite mySite = new SPSite(http://mysite/);

klappt zwar in einer Konsolenanwendung, aber nicht in einem ASP.NET Web Application Projekt (weder im Codebehind einer aspx-Seite noch im WebService).

@Andi: Du hast geschrieben, dass man das Ganze über einen Webservice oder WCF-Service lösen kann - hättest Du da ein Beispiel zu? Scheinbar fehlt mir nach wie vor ein richtiger Ansatz.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 22 Dez. 2010 12:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="V S"]klappt zwar in einer Konsolenanwendung, aber nicht in einem ASP.NET Web Application Projekt [/quote]

In einer Webanwendung auf dem SharePoint Server geht das. Ist das Projekt auch .NET 3.5 und kompiliert für x64 oder AnyCPU?

[quote user="V S"]Du hast geschrieben, dass man das Ganze über einen Webservice oder WCF-Service lösen kann - hättest Du da ein Beispiel zu? Scheinbar fehlt mir nach wie vor ein richtiger Ansatz.[/quote]

Nein, tut mir leid, weil ich noch nicht versucht habe, den Suchdienst anzuprogrammieren. Wie das mit WCF grundsätzlich geht, kannst Du evtl. hier sehen:
http://blogs.evocom.de/af/archive/2010/10/13/wcf-und-silverlight-in-sharepoint-teil-1-einen-eigenen-wcf-dienst-entwickeln-und-in-sharepoint-hosten.aspx

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
4 Beiträge
V S Als Antwort am 22 Dez. 2010 12:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Tatsächlich, ich bin schon wieder drauf reingefallen! Das mit "x64" war zwar im Konsolenprojekt, aber nicht in der Webanwendung eingestellt. Danke für den Tipp!

Leider komme ich nach wie vor nicht weiter. Nachdem ich die zunächst noch leere Webanwendung auf x64 umgestellt habe, lässt sich selbst die per Voreinstellung erzeugte Default.aspx nicht aufrufen. Stattdessen sehe ich folgende Meldung:

Could not load file or assembly 'Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.


Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.BadImageFormatException: Could not load file or assembly 'Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.

Wie mir scheint wird das durch eine 32-Bit-Version der System.Web verursacht, denn ich bekomme auch folgende Warnun angezeigt:

Warning 1 Assembly generation -- Referenced assembly 'System.Web.dll' targets a different processor Test

Aber wie kann es dazu komme? Wo ist die korrekte DLL?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 22 Dez. 2010 12:58
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Da mußt Du die Referenzen in Deinem Webprojekt anpassen. Einfach die alten rauswerfen und neu hinzufügen. Dabei wird dann automatisch die x64 genommen.

Viele Grüße
Andi
af @ evocom de
Blog