2013-08-20 102 views
3

我正在爲Sharepoint 2013開發自動託管的asp.net應用程序。我必須爲我的請求使用SPAppWebUrl標記值。所以,我想這一點:無法獲取SPAppWebUrl - SharePoint 2013

  • 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的值。我讀topicsabout tokens並注意到這一點:

如果沒有應用內網絡,該部分& SPAppWebUrl = {AppWebUrl}不存在。

但我不明白我怎麼不能有一個應用程序的網絡... 如果有人可以幫助請。謝謝。

回答

0

我在使用Provider Hosted時遇到了類似的問題。對於我來說,App Web並沒有過來,因爲我試圖使用一個不起作用的證書(通配符)。使用自簽名證書通過證書的設置去第二次 - 然後設置一個虛擬目錄,當我看着:

string spAppUrl = Request["SPAppWebUrl"]; 

我找回了應有的價值。然後,我使用URL通過以下方式獲取您的應用程序Web:

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; 
       } 
      } 
0

有完全相同的問題。下面的博客文章告訴你如何解決它:

SP Rest Services with Provider hosted app

基本上,因爲供應商提供託管的應用程序沒有和應用網絡,你要告訴的SharePoint創建它。您可以通過將虛擬對象(站點列,列表等)添加到SharePoint項目中來完成此操作。然後它將創建應用程序Web並將SPAppWebUrl添加到標準令牌(在應用程序清單中)。