从Azure以C#格式获取XML文件作为响应

从Azure以C#格式获取XML文件作为响应,c#,xml,windows-phone-7,azure,reporting-services,C#,Xml,Windows Phone 7,Azure,Reporting Services,我们在Azure上有一个RDL和XML文件。我有一个完整的URI,指向一个带有loginId和密码(Azure)的路径,可以直接下载xml文件 在浏览器中,此链接(fullURI)将 1.打开Azure登录页面。 2.输入凭据时,会打开一个对话框,询问您-是否要打开/保存/取消xml文件? 3.如果我们选择Open,它将在浏览器中打开XML文件 在使用C代码的WP7应用程序中,我们试图从上面访问xml。代码片段如下所示。 protected class GetContext { publ

我们在Azure上有一个RDL和XML文件。我有一个完整的URI,指向一个带有loginId和密码(Azure)的路径,可以直接下载xml文件

在浏览器中,此链接(fullURI)将 1.打开Azure登录页面。 2.输入凭据时,会打开一个对话框,询问您-是否要打开/保存/取消xml文件? 3.如果我们选择Open,它将在浏览器中打开XML文件

在使用C代码的WP7应用程序中,我们试图从上面访问xml。代码片段如下所示。

protected class GetContext
{
    public HttpWebRequest Request;
}
请求

响应

这里,GetResponseStream的输出不是XML文件。当流被存储到一个字符串中时,我们看到它是作为HTML的Azure登录页面

来自GETRESPONSESTREAM的响应,我觉得这只是一个HTML azure登录页面(包含我们发送的信息)。下面是回复,我在这里用URL替换了一些机密信息,以替换报告服务器中的XML文件(基本上是目标uri),一些加密的值

\r\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" >\r\n\r\n\r\n<html lang=\"en-US\">\r\n   <head id=\"Head1\"><meta http-equiv=\"Content-Type\" content=\"text/html;charset=ISO-8859-1\" /><link rel=\"Stylesheet\" type=\"text/css\" href=\"Public/Logon.css\" /><title>\r\n\tWindows Azure SQL Reporting\r\n</title></head>\r\n   <body >\r\n      <form name=\"Logon\" method=\"post\" action=\"logon.aspx?ReturnUrl=URL_TO_THE_XML_FILE_IN_REPORTING_SERVER\" id=\"Logon\">\r\n<input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\" value=\"/SOME_ENCRYPTED_VALUE\" />\r\n\r\n<input type=\"hidden\" name=\"__EVENTVALIDATION\" id=\"__EVENTVALIDATION\" value=\"/SOME_ENCRYPTED_VALUE\" />\r\n\r\n        <h1 id=\"Title\"><span id=\"LblTitleContent\">Windows Azure</span></h1>\r\n        <hr />\r\n        <div class=\"ClsIntro\">\r\n            <span id=\"LblIntro\"></span>\r\n        </div>\r\n        <div class=\"ClsInput\">\r\n            <div>\r\n                <label for=\"TxtUser\" id=\"LblUser\">User name</label>\r\n            </div>\r\n            <div>\r\n                <input name=\"TxtUser\" type=\"text\" id=\"TxtUser\" tabindex=\"1\" />\r\n            </div>\r\n        </div>\r\n        <div class=\"ClsInput\">\r\n            <div>\r\n                <label for=\"TxtPwd\" id=\"LblPwd\">Password</label>\r\n            </div>\r\n            <div>\r\n                <input name=\"TxtPwd\" type=\"password\" id=\"TxtPwd\" tabindex=\"2\" />\r\n            </div>\r\n        </div>\r\n        <div class=\"ClsSignIn\">\r\n            <input type=\"submit\" name=\"BtnLogon\" value=\"Sign in\" id=\"BtnLogon\" tabindex=\"4\" /><input type=\"image\" name=\"BtnLogonArrow\" id=\"BtnLogonArrow\" tabindex=\"5\" src=\"Public/WhiteRightArrow.png\" alt=\"Sign in\" align=\"baseline\" border=\"0\" />\r\n        </div>\r\n        <div class=\"ClsErrMsg\">\r\n            <span id=\"lblMessage\"></span>\r\n        </div>\r\n        <hr />\r\n      </form>\r\n   </body>\r\n</html>
\r\n\r\n\r\n\r\n\r\n\r\n\tWindows Azure SQL Reporting\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n Windows Azure\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n用户名\r\n\r\n\n\r\n\n\r\n\n\r\n\r\n\r\n密码\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\r\n\r\n
问题

  • 即使传递了网络凭据,为什么登录页面会收到HTML响应

  • 是什么原因导致该行出现异常?-_xmlDocument=XElement.Load(streamResult)

  • 我们从C#代码访问Azure托管的XML时是否遗漏了什么

  • 我们应该更关注服务器端,根据您从问题描述的前四行中所能理解的内容来更正直接XML文件的URL吗

  • 提前感谢,


    Trilok Rangan.

    返回html可能是由于遇到异常时在服务器上运行到通用错误处理页面

    因此,请确保在所有情况下都返回xml,即使在出现异常的情况下也是如此

    该异常可能由安全问题或服务器上的任何其他错误引起

    确保服务器设置的内容类型正确

    如果文件存储在blob存储中:

    如果文件是静态内容::

    
    
    如何创建XML文件?NotSupportedException通常表示您的XML文件有问题。我们得到的是一个HTML文件作为响应,而不是XML文件,因此我认为是NotSupportedException。您如何返回XML文件?请显示一些服务器端code@SandrinoDiMattia-服务器端没有运行我们自己的代码,因为它只是在报告服务上运行。我正在连接到报表服务。您指定了什么作为响应的MIME类型?
    private void HandleResponse(IAsyncResult asyncResult)
    {
        var context = (GetFContext)result.AsyncState;
        WebResponse response = context.Request.EndGetResponse(asyncResult);
    
        //get the stream containing the response from the async call
        Stream streamResult;
        streamResult  =  response.GetResponseStream();
    
        // load the XML
        _xmlDocument = XElement.Load(streamResult); // EXCEPTION AT THIS LINE NOTSUPPORTEDEXCEPTION
    
       ….   …         …
    
    }
    
    \r\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" >\r\n\r\n\r\n<html lang=\"en-US\">\r\n   <head id=\"Head1\"><meta http-equiv=\"Content-Type\" content=\"text/html;charset=ISO-8859-1\" /><link rel=\"Stylesheet\" type=\"text/css\" href=\"Public/Logon.css\" /><title>\r\n\tWindows Azure SQL Reporting\r\n</title></head>\r\n   <body >\r\n      <form name=\"Logon\" method=\"post\" action=\"logon.aspx?ReturnUrl=URL_TO_THE_XML_FILE_IN_REPORTING_SERVER\" id=\"Logon\">\r\n<input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\" value=\"/SOME_ENCRYPTED_VALUE\" />\r\n\r\n<input type=\"hidden\" name=\"__EVENTVALIDATION\" id=\"__EVENTVALIDATION\" value=\"/SOME_ENCRYPTED_VALUE\" />\r\n\r\n        <h1 id=\"Title\"><span id=\"LblTitleContent\">Windows Azure</span></h1>\r\n        <hr />\r\n        <div class=\"ClsIntro\">\r\n            <span id=\"LblIntro\"></span>\r\n        </div>\r\n        <div class=\"ClsInput\">\r\n            <div>\r\n                <label for=\"TxtUser\" id=\"LblUser\">User name</label>\r\n            </div>\r\n            <div>\r\n                <input name=\"TxtUser\" type=\"text\" id=\"TxtUser\" tabindex=\"1\" />\r\n            </div>\r\n        </div>\r\n        <div class=\"ClsInput\">\r\n            <div>\r\n                <label for=\"TxtPwd\" id=\"LblPwd\">Password</label>\r\n            </div>\r\n            <div>\r\n                <input name=\"TxtPwd\" type=\"password\" id=\"TxtPwd\" tabindex=\"2\" />\r\n            </div>\r\n        </div>\r\n        <div class=\"ClsSignIn\">\r\n            <input type=\"submit\" name=\"BtnLogon\" value=\"Sign in\" id=\"BtnLogon\" tabindex=\"4\" /><input type=\"image\" name=\"BtnLogonArrow\" id=\"BtnLogonArrow\" tabindex=\"5\" src=\"Public/WhiteRightArrow.png\" alt=\"Sign in\" align=\"baseline\" border=\"0\" />\r\n        </div>\r\n        <div class=\"ClsErrMsg\">\r\n            <span id=\"lblMessage\"></span>\r\n        </div>\r\n        <hr />\r\n      </form>\r\n   </body>\r\n</html>
    
    <configuration>
    
        <system.webServer>
    
            <staticContent>
                <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
                <mimeMap fileExtension=".m4v" mimeType="video/m4v" />
            </staticContent>
    
        </system.webServer>
    
    </configuration>