私はVistaとIIS7を持っています。Silverlightアプリケーションからlocalhost上のXMLファイルを読み取る方法は?
がlocalhostからxmlファイルを読み取る単純なSilverlightアプリケーションを作成したいとします。
私は(私が管理者として「許可」をコピーして、クリックする必要がありました)、このファイルを作成:
C:\inetpub\wwwroot\data\customers.xml
と私は、ブラウザでここに行くときにそれを見ることができます。
http://localhost/data/customers.xml
しかし、私は、次のコードを実行すると、私はターゲット呼び出し例外を取得:
using System;
using System.Net;
using System.Windows.Controls;
using System.IO;
namespace TestXmlRead234
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
WebClient client = new WebClient();
client.OpenReadAsync(new Uri("http://localhost/data/customers.xml", UriKind.Absolute));
client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
}
void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
StreamReader myReader = new StreamReader(e.Result);
Output.Text = myReader.ReadLine();
myReader.Close();
}
}
}
だから私はC:\inetpub\wwwroot\crossdomainpolicy.xml
作成:
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy >
<allow-from http-request-headers="Content-Type">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
をしかし、私はまだターゲットを取得呼び出し例外エラー。
{System.Security.SecurityException ---> System.Security.SecurityException: Sicherheitsfehler BEI System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(たIAsyncResult ここ
フル内部例外でありますasyncResult)bei System.Net.Browser.BrowserHttpWebRequest。 <> c__DisplayClass5.b__4(オブジェクト sendState)bei System.Net.Browser.AsyncHelper。 <> c__DisplayClass2.b__0(sendStateオブジェクト)--- Ausnahmestapelüberwachunginternenエンデデル--- BEI System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod、オブジェクト状態) System.Net.Browser.BrowserHttpWebRequest.EndGetResponse BEI System.Net.WebClient.OpenReadAsyncCallback( たIAsyncResult結果)BEI System.Net.WebClient.GetWebResponse(WebRequestクラス 要求たIAsyncResult結果)BEI(たIAsyncResult asyncResult)}
更新1:ウィンドウで元私はC:\inetpub\wwwroot\data
を右クリックし、IIS_USERSをそのディレクトリの共同所有者にしました。しかし、同じエラーが表示されます。 :-(
アップデート2:も "みんな" C:\inetpub\wwwroot\data
の共同オーナー、同じエラーました。:-(
アップデート3:は、管理者としてコマンドウィンドウを開き、次のコマンドを実行します。netshのhttpはurlacl URLを追加= http://+:80/ユーザー= MYDOMAIN \ MYUSERNAME
他に何私が読むことができるようにする必要がありませんSilverlightアプリケーションからローカルホストからテキストファイル
実用的ANSWER:?
試験するためがローカルだけの一時的なローカルホストのウェブに公開あなたも、あなたが生きて公開するときに必要な変更を行い、その後、クロスドメインファイルを必要としないためERVERポート:
using System;
using System.Linq;
using System.Net;
using System.Windows.Controls;
using System.IO;
using System.Xml.Linq;
namespace TestWeb124
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
WebClient wc = new WebClient();
wc.OpenReadAsync(new Uri("http://localhost:49512/customers.xml", UriKind.Absolute));
wc.OpenReadCompleted += wc_OpenReadCompleted;
}
private void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if (e.Error != null)
{
Output.Text = e.Error.Message;
return;
}
using (Stream s = e.Result)
{
XDocument doc = XDocument.Load(s);
Output.Text = doc.ToString(SaveOptions.OmitDuplicateNamespaces);
var customers = from c in doc.Descendants("customer")
select new
{
FirstName = c.Element("firstName").Value
};
foreach (var customer in customers)
{
Output.Text += customer.FirstName;
}
}
}
}
}
(スタックトレースを使用して)正確なエラーメッセージを投稿できますか? –
OK内部例外が追加されました:Sicherheitsfehlerは単に「セキュリティエラー」です。これはcrossdomainpolicy.xmlがない場合とまったく同じエラーです –