0
我正在嘗試編寫一個頁面來託管,代碼一直在拋出異常。我相信問題是服務器上的權限不會讓XmlUrlResolver的子類得到實例化,但我想用這個請求一些幫助...GoDaddy不會讓XmlUrlResolver運行
此代碼在我的本地開發框中工作,並且如果我使用File.ReadAllText(HostingEnvironment.MapPath( 「〜/ XML/home.xml」)),它的工作,所以我相當肯定它不是IO權限....
例外:
Security Exception
Description: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.
Exception Details: System.Security.SecurityException: Request failed.
Source Error:
Line 33: t.Load(reader, null, new XsltUrlResolver());
Line 34: sb = new StringBuilder(File.ReadAllText(HostingEnvironment.MapPath("~/xslt/url-encode.xslt")));
Line 35: }
Line 36: </script>
Line 37:
代碼(這是我用來試圖縮小問題範圍的一個簡單頁面):
<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="false" Inherits="System.Web.UI.Page" %>
<%@ Import Namespace="Web" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Web.Hosting" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Web" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
public StringBuilder sb = new StringBuilder();
public class XsltUrlResolver : XmlUrlResolver
{
public override Uri ResolveUri(Uri baseUri, string relativeUri)
{
if (baseUri != null)
return base.ResolveUri(baseUri, relativeUri);
else
return base.ResolveUri(baseUri, HostingEnvironment.MapPath(relativeUri));
}
}
protected void Page_Load(object sender, EventArgs e)
{
// create the readers for the xml and xsl
XmlReader reader = XmlReader.Create(new StringReader(File.ReadAllText(HostingEnvironment.MapPath("~/xslt/home.xslt"))));
XmlReader input = XmlReader.Create(new StringReader(File.ReadAllText(HostingEnvironment.MapPath("~/xml/home.xml"))));
// create the xsl transformer
XslCompiledTransform t = new XslCompiledTransform(true);
t.Load(reader, null, new XsltUrlResolver());
sb = new StringBuilder(File.ReadAllText(HostingEnvironment.MapPath("~/xslt/url-encode.xslt")));
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%= sb.ToString() %>
</div>
</form>
</body>
</html>
謝謝你的幫助。這是一個難題。我不再傳入XmlResolver,而是將導入的樣式表的標準網址。這已經解決了測試頁面的問題,但是我的完整代碼仍然會拋出安全異常。 – 2009-11-04 22:22:27
你可以添加異常的調用堆棧到你的問題嗎?這將有助於瞭解現在您修復第一個解決問題的位置。另外,你的樣式表是否包含任何腳本?聽起來像腳本不能包含在中等信任下的已編譯樣式表中。 – 2009-11-05 01:03:23
您可能還想調整自己的開發者服務器以在中等信任度下運行,這樣您可以在離家較近的地方進行調試 - 這可能會加快診斷速度,而不是每次嘗試修復時必須上傳到GoDaddy。 :-) – 2009-11-05 01:04:22