2009-04-04 2 views
3

Ich habe einen benutzerdefinierten Infopath-Workflow, der Benutzern ermöglicht, expesne Berichte einzureichen. Immer wenn jemand eine Spesenabrechnung in der Formularbibliothek einreicht, wird der Workflow initiiert. Der Workflow überprüft die Web-URL und erstellt mithilfe einer generischen Methode einen Link, der auf den Workflow-Artikel verweist, und sendet diesen Link in einer Mail an den Übergebenden und Genehmigenden.Getting (Public) Internet-URL für die Sharepoint-Portal-Site

Nun, was ich erreichen möchte, ist, dass ich eine Möglichkeit brauche, mit einer öffentlichen URL auf den Workflow-Artikel zu verweisen. Selbst wenn der Benutzer eine Anfrage aus dem Intranet oder Internet einreicht, verweist der Link auf die Internet-URL Die Benutzer können Elemente aus ihrem Postfach mithilfe der Internet-URL öffnen, wenn das Intranet nicht verfügbar ist.

Also ich denke, in Kürze brauche ich einen Weg, um die öffentliche URL für eine Website zu bekommen. Beachten Sie auch, dass die Site für das Internet mit einigen Sicherheitseinstellungen erweitert werden kann. Was wäre der einfachste und effizienteste Weg, dies zu tun.

Antwort

0

Wenn ich verstehe, was Sie versuchen, möchten Sie eine Internet-zugängliche Methode für den Zugriff auf ein SharePoint-Workflow-Objekt. Korrigiere mich, wenn ich falsch liege.

Hier ist, was ich tun würde: Ich würde eine einfache Website w/DNS einrichten, die eine einzelne Seite hat, die das Workflow-Objekt verfügbar macht. Auf diese Weise können Sie einfach diese Website als Basis für den Link in der Benachrichtigung verwenden.

Beispiel: Ich habe eine HTML-Formular-Engine, die ich vor einiger Zeit geschrieben habe. Ein Kunde hat gerade darum gebeten, dass er auch im Internet zugänglich ist. Ich habe eine neue Site in IIS erstellt, umgekehrt die IP-Adresse und voila, meine Intranet-Anwendung ist dem Internet ausgesetzt. Natürlich gibt es Sicherheitsprobleme und kleine Intranetkavitäten, die man sich kümmern musste, aber nichts zu großes.

Hoffe, dass hilft.

3

Der relative Pfad Ihrer Seite oder der Link ist unabhängig von der Zone, von der aus der Benutzer auf die Site zugreift, gleich. Alles, was Sie in der URL ändern müssen, ist der Host-Name-Teil.

Sie die URL für jede Zone mit dem folgenden Code

SPContext.Current.Site.WebApplication.GetResponseUri(Microsoft.SharePoint.Administration.SPUrlZone.Default).AbsoluteUri 
2

Sie sicher, dass Sie immer URLs aus einer bestimmten Zone durch die Schaffung eines neuen SPSite-Objekt und die Angabe der Zone für sie im Konstruktor bekommen bekommen machen kann . In Ihrem Fall könnten Sie versuchen, mit der Zone Standard (SharePoint verwendet URLs aus dieser Zone, wenn Sie zum Beispiel E-Mails senden) oder der Internet Zone. Sie haben ein kleines Beispiel unten:

using(SPSite site = new SPSite(currentSiteId, SPUrlZone.Default) 
{ 
    string publicUrl = site.MakeFullUrl(serverRelativeUrl); 
    // note that MakeFullUrl takes a server relative url not a site relative one 
}