3

我正在为 Sharepoint 2013 开发一个自动托管的 asp.net 应用程序。我必须为我的请求使用 SPAppWebUrl 令牌值。所以我尝试了这个:

  • AppManifest.xml:<StartPage>~remoteAppUrl/Pages/Index.aspx?{StandardTokens}</StartPage>
  • javascript: var appweburl = decodeURIComponent(getQueryStringParameter("SPAppWebUrl"));
  • C# 代码隐藏:Application["SPAppWebUrl"] = Request.QueryString["SPAppWebUrl"];

没有任何效果。Sharepoint 仅发送 SPHostUrl、SPLanguage、SPClientTag 和 SPProductNumber 的值。我阅读了有关令牌的主题 并注意到了这一点:

如果没有应用程序网站,则 &SPAppWebUrl={AppWebUrl} 部分不存在。

但我不明白我怎么不能有一个应用程序网络......如果有人可以帮忙。谢谢。

4

2 回答 2

0

我在使用 Provider Hosted 时遇到了类似的问题。我的 App Web 没有出现,因为我尝试使用不起作用的证书(通配符)。使用自签名证书第二次完成证书设置 - 然后设置一个虚拟列表,当我查看时:

string spAppUrl = Request["SPAppWebUrl"];

我正在恢复正确的价值。然后我使用 URL 通过以下方式获取您的应用程序网络:

System.Security.Principal.WindowsIdentity currentUser = Request.LogonUserIdentity;

using (var appContext = TokenHelper.GetS2SClientContextWithWindowsIdentity(appUri, currentUser))
            {
                if (appContext != null)
                {
                    Web appWeb = appContext.Web;
                    appContext.Load(appWeb, w => w.Title);
                    appContext.ExecuteQuery();
                    string title = appWeb.Title;
                    ViewBag.SiteTitle = title;
                }
            }
于 2014-01-28T22:05:57.717 回答
0

有完全相同的问题。以下博客文章告诉您如何解决它:

带有提供商托管应用程序的 SP 休息服务

基本上,由于提供商托管的应用程序没有应用程序 Web,因此您必须告诉 sharepoint 来创建它。为此,您可以向 SharePoint 项目添加一个虚拟对象(网站栏、列表等)。然后它将创建应用程序 Web 并将 SPAppWebUrl 添加到标准令牌(在应用程序清单中)。

于 2016-08-12T14:54:25.610 回答