2011-06-14 129 views
1

我有一個查詢Web服務的小程序,使用XSLT轉換結果並將它們顯示在jQuery控件中。當我的代碼進入一個網絡的一部分,並部署它,但我發現了以下錯誤:Web部分錯誤:(401)未授權

The remote server returned an error: (401) Unauthorized. 

這就是會加載我的XSLT文件中的代碼,這是我懷疑的問題是:

XPathDocument xPathDoc; 
XsltArgumentList args; 

protected override void OnPreRender(EventArgs e) 
{ 
    xPathDoc = QueryRunner.GetQueryResults(); 
    args = QueryRunner.GetColumnsToShow(); 
} 

public static XPathDocument GetQueryResults() 
{ 
    OpacAccess.OpacAccess proxy = new OpacAccess.OpacAccess(); 

    string result = string.Empty; 

    try 
    { 
    result = proxy.query("CompanyName", "username", "password", 
     ReadingList=\"London\"", 1000); 
    } 
    catch (Exception ex) 
    { 
    } 

    // Store the xml of the result 
    XPathDocument xPathDoc = new XPathDocument(new StringReader(result)); 

    return xPathDoc; 
} 

protected override void RenderContents(HtmlTextWriter output) 
{ 
    XslTransform xslt = new XslTransform(); 

    // Load the xslt file and perform the transformation 
    xslt.Load("http://rginfonet/Style%20Library/XSL%20Style%20Sheets/Liberty.xslt"); 
    xslt.Transform(xPathDoc, args, output, null); 
    output.Flush(); 
} 

這裏是我的堆棧跟蹤,如果它是在所有有用的人:

[引發WebException:遠程服務器返回錯誤:(401)未經授權] System.Net.HttpWebRequest.GetResponse()5375213系統.Xml.XmlDownloadManager.GetNonFileStream(Uri uri,ICredentials憑證)+6 9 System.Xml.XmlDownloadManager.GetStream(URI URI,ICredentials憑證)3929371 System.Xml.XmlUrlResolver.GetEntity(URI絕對URI,字符串的作用,類型ofObjectToReturn)+54 System.Xml.XmlTextReaderImpl.OpenUrlDelegate(對象的XmlResolver)+74系統.Threading.CompressedStack.runTryCode(對象的UserData)70 System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode代碼,CleanupCode backoutCode,對象的UserData)0 System.Threading.CompressedStack.Run(compressedStack compressedStack,ContextCallback回調,對象狀態) 108 System.Xml.XmlTextReaderImpl.OpenUrl()186 System.Xml.XmlTextReaderImpl.Read()208 System.Xml.XPath.XPathDocument.LoadFromReader(的XmlReader讀取器,XmlSpace空間)217 System.Xml.XPath.XPathDocument。 。(XmlReader reader,XmlSpace空間)+20 System.Xml.Xsl.XsltOld.Compiler.LoadDocument(XmlTextReaderImpl reader)+85 System.Xml.Xsl.XslTransform.Load(String url,XmlResolver解析器)+100 System.Xml。 Xsl.XslTransform.Load(String u RL)25個LibertyControl.ResultsGrid.RenderContents(HtmlTextWriter的輸出)74 System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter的作家)32 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter的作家的ControlAdapter適配器)27 System.Web.UI.Control.RenderControl(HtmlTextWriter writer,ControlAdapter adapter)+99 System.Web.UI.Control.RenderControl(HtmlTextWriter writer)+25 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children)+ 134 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)+19 System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer)+10 System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer)+32 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter作家,ControlAdapter適配器)+27 System.Web.UI.Control.RenderControl(HtmlTextWriter作家,ControlAdapter適配器)+99 System.Web.UI.Control.RenderControl(HtmlTextWriter作家)+ 25 Microsoft.SharePoint.WebPartPages.SPChrome.RenderPart內容(HtmlTextWriter輸出,WebPart部分)+66

[WebPartException:遠程服務器返回錯誤:(401)Unauthorized。] Microsoft.SharePoint.WebPartPages.SPChrome.RenderPartContents(HtmlTextWriter輸出,WebPart部件)+140 Microsoft。 SharePoint.WebPartPages.SPChrome.RenderWebPart(HtmlTextWriter輸出,WebPart部分)+63 Microsoft.SharePoint.WebPartPages.WebPartZone.RenderZoneCell(HtmlTextWriter輸出,布爾bMoreParts,WebPart部分)+144 Microsoft.SharePoint.WebPartPages.WebPartZone.RenderWebParts(HtmlTextWriter輸出, ArrayList中的WebParts)495 Microsoft.SharePoint.WebPartPages.WebPartZone.Render(HtmlTextWriter的輸出)902 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter的作家的ControlAdapter適配器)+27 System.Web.UI.Control.RenderControl(HtmlTextWriter的作家,ControlAdapter適配器)+99 System.Web.UI.Control.RenderControl(HtmlTextWriter wri ter)+25 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children)+134 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)+19 System.Web.UI.Control.Render(HtmlTextWriter writer) +10 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter作家,ControlAdapter適配器)+27 System.Web.UI.Control.RenderControl(HtmlTextWriter作家,ControlAdapter適配器)+99 System.Web.UI.Control.RenderControl(HtmlTextWriter作家)+25 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter的作家,ICollection的兒童)+134 System.Web.UI.Control.RenderChildren(HtmlTextWriter的作家)+19 System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter的作家)+32 System.Web.UI.Control。RenderControlInternal(HtmlTextWriter作家,ControlAdapter適配器)+27 System.Web.UI.Control.RenderControl(HtmlTextWriter作家,ControlAdapter適配器)+99 System.Web.UI.Control.RenderControl(HtmlTextWriter作家)+25 System.Web.UI.Control .RenderChildrenInternal(HtmlTextWriter writer,ICollection children)+134 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)+19 System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer)+163 System.Web.UI.HtmlControls .HtmlContainerControl.Render(HtmlTextWriter作家)+32 System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter輸出)+51 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter作家,ControlAdapter適配器)+27 System.Web.UI .Control.RenderControl(HtmlTextWriter writer,ControlAdapter adapter)+99 System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer)+40 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children)+134 System。 Web.UI.Control.RenderChild ren(HtmlTextWriter作家)+19 System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter作家)+32 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter作家,ControlAdapter適配器)+27 System.Web.UI.Control。 RenderControl(HtmlTextWriter writer,ControlAdapter adapter)+99 System.Web.UI.Control.RenderControl(HtmlTextWriter writer)+25 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children)+134 System.Web.UI.Control .RenderChildren(HtmlTextWriter作家)+19 System.Web.UI.Control.Render(HtmlTextWriter作家)+10 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter作家,ControlAdapter適配器)+27 System.Web.UI.Control.RenderControl (HtmlTextWriter writer,ControlAdapter adapter)+99 System.Web.UI.Control.RenderControl(HtmlTextWriter writer)+25 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children)+134 System.Web.UI.Control。 RenderChildren(HtmlTextWriter作家)+19 System.Web.UI.Page.Rend er(HtmlTextWriter writer)+29 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,ControlAdapter adapter)+27 System.Web.UI.Control.RenderControl(HtmlTextWriter writer,ControlAdapter adapter)+99 System.Web.UI.Control .RenderControl(HtmlTextWriter作家)+25 System.Web.UI.Page.ProcessRequestMain(布爾includeStagesBeforeAsyncPoint,布爾includeStagesAfterAsyncPoint)+1266

請讓我知道,如果你可以借一些洞察什麼是造成這一點。謝謝!

回答

2

負責呈現Web部件的帳戶無權訪問您擁有xslt的文檔庫。

有幾種方法來解決這個問題,

  1. 授予權限的系統帳戶訪問圖書館
  2. 使用模擬
  3. 如果XSLT不會帶來太大變化則包括它作爲webpart的資源
+0

謝謝!聽起來最簡單的方法是將其作爲資源。最初,該程序正在爲我的硬盤驅動器上的XSLT文件提供一個目錄,但這不會繼續前進。您能否告訴我一個很好的資源,其中解釋瞭如何在Sharepoint 2007的webpart中包含資源? – 2011-06-14 14:28:53

+0

您可以將XSLT作爲嵌入式資源包含在程序集中。 – 2011-06-14 17:09:17

0

如果您在web文件夾中部署了webpart,可能是該文件夾沒有權限,也無法向您顯示webpart.Add足夠的權限附件。