2011-06-14 128 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足够的权限附件。