我有一个自定义的infopath工作流程,允许用户提交经验报告。每当有人在表单库中提交费用报表时,就会启动工作流程。工作流检查weburl并使用通用方法创建指向工作流项的链接,并将此链接通过邮件发送给提交者和批准者。
现在我想要实现的是我需要一种方法来指向使用公共URL的工作流项目,所以即使用户从内部网或互联网提交请求,链接也将指向互联网网址,因此当内部网不可用时,用户可以使用互联网网址从其邮箱中打开项目。
所以我想简而言之,我需要一种方法来获取网站的公共网址。另外请记住,在某些安全设置到位的情况下,网站可能会扩展到互联网。什么是最简单,最有效的方法。
答案 0 :(得分:3)
无论用户访问本网站的区域如何,您页面或链接的相对路径都是相同的。您需要在URL中更改的是主机名部分。
您可以使用以下代码获取任何区域的网址
SPContext.Current.Site.WebApplication.GetResponseUri(Microsoft.SharePoint.Administration.SPUrlZone.Default).AbsoluteUri
答案 1 :(得分:2)
您可以通过创建新的SPSite对象并在构造函数中为其指定区域来确保始终从特定区域获取URL。在您的情况下,您可以尝试使用默认区域(例如,SharePoint在发送电子邮件时使用此区域中的URL)或 Internet 区域。你有一个小样本:
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
}
答案 2 :(得分:0)
如果我了解您的尝试,您需要一种可通过Internet访问的方法来访问SharePoint工作流对象。如果我错了,请纠正我。
以下是我要做的事情:我将建立一个简单的网站w / DNS,它有一个公开工作流对象的页面。这样,您就可以使用此站点作为通知中链接的基础。
示例:我有一段时间写的HTML表单引擎。客户只是要求它也可以在互联网上访问。我在IIS中创建了一个新站点,反向代理了IP地址,瞧,我的内部网应用程序暴露在互联网上。当然,还有安全问题和小型内联网鱼缸必须要照顾,但没有太大的。
希望有所帮助。