2011-03-14 33 views
1

我试图从XAMPP本地托管的PHP,MySQL服务中检索数据到我的SL应用程序。 我可以看到我的PHP文件运行正常,并通过JSON(http://localhost/silverlight/data.php)传递结果,但SL无法接收它。我相信它与正确的URL路径有关,但我无法弄清楚。此外,我的推杆clientaccesspolicy.xml文件以允许跨域访问但无济于事:(Xampp上的Silverlight Localhost

public partial class MainPage : UserControl 
{ 
    WebClient wc = new WebClient(); 
    ObservableCollection<ToDoItem> myToDoList = new ObservableCollection<ToDoItem>(); 
    string baseURI = "http://localhost/silverlight/"; 

    public MainPage() 
    { 
     InitializeComponent(); 
     wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted); 
     wc.DownloadStringAsync(new Uri(baseURI + "data.php",UriKind.Absolute)); 
    } 



    void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 

     if (e.Error == null && e.Result!= "") 
     { JsonValue completeResult = JsonPrimitive.Parse(e.Result); 
      string resultType = completeResult["returnType"].ToString().Replace("'", "").Trim();} 
+1

能否请您发表您的'clientaccesspolicy.xml'文件,并仔细检查它位于'HTTP://本地主机/ clientaccesspolicy.xml' – 2011-03-14 14:24:29

+0

从MSDN采取的clientpolicy.xml是: [代码] < ?XML版本= “1.0” 编码= “UTF-8”?> <访问策略> <跨域存取> <允许-从http请求报头= “的SOAPAction”> <域URI = “*”/> <资源路径= “/” 包括-子路径= “真”/> [/ code] – Jim 2011-03-15 04:24:41

回答

0

你只使用clientaccesspolicy.xml文件允许Web服务请求跨域访问(由http-request-headers="SOAPAction"指定)

对于WebClient的工作,你使用它的方式,您需要启用内容请求为好。

尝试指定http-request-headers="*"http-request-headers="SOAPAction,Content-Type"

而且,请检查clientaccesspolicy.xml文件是否位于主机的根目录,即http://localhost/clientaccesspolicy.xml。最终,当您决定部署应用程序时,您必须确保文件也放置在部署主机的根目录中,例如http://example.org/clientaccesspolicy.xml

+0

谢谢,我只是把clientaccesspolicy.xml放到本地主机上,一切都开始工作:) – Jim 2011-03-16 04:51:57