我被这个问题难住了,并为我的问题向专家们提出了建议。
我有一个启用了 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;
}