2

我被这个问题难住了,并为我的问题向专家们提出了建议。

我有一个启用了 Siteminder 的 ASP.NET MVC 应用程序。此外,此应用程序有一部分 URL,它们是向另一个应用程序提供数据的 Web 服务。这些 URL 已在 Siteminder 设置中配置为“绕过”Siteminder 身份验证。我已经仔细检查了绕过以确保 Siteminder 配置正确。我可以在浏览器中输入这些 URL,并且 JSON 数据显示为“没有”Siteminder 身份验证。然而....

问题是当我使用 HttpWebResponse、Stream 和 StreamReader 在启用站点管理器时检索 JSON 数据时,当调用 StreamReader.ReadToEnd() 而不是 JSON 格式的数据时,我将站点管理器“登录页面 HTML”作为字符串?

这令人费解,因为我这里的另一个开发人员可以访问相同的 Web 服务并在 PYTHON 应用程序中获取“正确”的 JSON 格式数据。另外,我把它放在一个普通的 ASP.NET 应用程序中,所以它不是 MVC 问题。我得到相同的结果。

我应该使用另一个类或库吗?我需要将配置设置传递给 Web 服务调用吗?任何帮助将不胜感激。

这是其中一个 Web 服务调用的代码。

        public static string GetData()
    {
        string host = (string)System.Configuration.ConfigurationManager.AppSettings["WEBSERVICE_GET"];
        string URL = host + "Api/GetData";
        var end = string.Empty;

        try
        {
            HttpWebRequest request = WebRequest.Create(URL) as HttpWebRequest;

            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            using (Stream responseStream = response.GetResponseStream())
            {
                if (response.StatusCode != HttpStatusCode.OK && response.StatusCode != HttpStatusCode.Created)
                {
                    throw new HttpException((int)response.StatusCode, response.StatusDescription);
                }


                using (StreamReader reader = new StreamReader(responseStream))
                {
                    end = reader.ReadToEnd();
                    reader.Close();
                }

                responseStream.Close();
                response.Close();


            }

        }
        catch (Exception ex)
        {
            EmailNotification.SendErrorEmail("Could not get Data from WEBSERVICE + ex);
        }

        return end;

    }
4

0 回答 0