WebException 响应没有 return 完整响应
WebException response didn't return the full response
我在我的 Web API 服务(Windows 已验证)中使用 WebClient 对我们的公司目录(Windows 已验证)进行 HTTP 调用以获取用户的配置文件。请看下面。
public string DownloadPage(string ntid)
{
var result = "";
try
{
using (var client = new WebClient() {UseDefaultCredentials = true})
{
using (var stream = client.OpenRead($"{url}{urlParameter}{ntid}"))
{
using (var reader = new StreamReader(stream))
{
result = reader.ReadToEnd();
}
}
}
}
catch (Exception ex)
{
log.Error(ex);
}
log.Info(result);
return result;
}
该代码在本地和我们的测试环境中运行完美,但是当我将它部署到 Produciton 环境时 return 出现“500 内部服务器错误”。我根据 500 internal server error at GetResponse() 的解决方案解决了 500 错误。请参阅下面的代码。但是,我发现只有 html 的一部分得到了 returned。是否需要通过代码或 IIS 设置主体长度或最大 return 大小?
public string DownloadPage(string ntid)
{
var result = "";
try
{
using (var client = new WebClient() {UseDefaultCredentials = true})
{
using (var stream = client.OpenRead($"{url}{urlParameter}{ntid}"))
{
using (var reader = new StreamReader(stream))
{
result = reader.ReadToEnd();
}
}
}
}
catch (WebException webex)
{
//
var errResp = webex.Response;
using (var stream = errResp.GetResponseStream())
{
using (var reader = new StreamReader(stream))
{
result = reader.ReadToEnd();
}
}
}
catch (Exception ex)
{
log.Error(ex);
}
log.Info(result);
return result;
}
我认为您可以访问活动目录,这就是代码在本地运行但在 IIS 上应用程序池来自 ApplicationPoolIdentity 的 运行 的原因,它没有访问权限。
转到应用程序池并将身份更改为您的帐户。这是供您参考的图片:
我在我的 Web API 服务(Windows 已验证)中使用 WebClient 对我们的公司目录(Windows 已验证)进行 HTTP 调用以获取用户的配置文件。请看下面。
public string DownloadPage(string ntid)
{
var result = "";
try
{
using (var client = new WebClient() {UseDefaultCredentials = true})
{
using (var stream = client.OpenRead($"{url}{urlParameter}{ntid}"))
{
using (var reader = new StreamReader(stream))
{
result = reader.ReadToEnd();
}
}
}
}
catch (Exception ex)
{
log.Error(ex);
}
log.Info(result);
return result;
}
该代码在本地和我们的测试环境中运行完美,但是当我将它部署到 Produciton 环境时 return 出现“500 内部服务器错误”。我根据 500 internal server error at GetResponse() 的解决方案解决了 500 错误。请参阅下面的代码。但是,我发现只有 html 的一部分得到了 returned。是否需要通过代码或 IIS 设置主体长度或最大 return 大小?
public string DownloadPage(string ntid)
{
var result = "";
try
{
using (var client = new WebClient() {UseDefaultCredentials = true})
{
using (var stream = client.OpenRead($"{url}{urlParameter}{ntid}"))
{
using (var reader = new StreamReader(stream))
{
result = reader.ReadToEnd();
}
}
}
}
catch (WebException webex)
{
//
var errResp = webex.Response;
using (var stream = errResp.GetResponseStream())
{
using (var reader = new StreamReader(stream))
{
result = reader.ReadToEnd();
}
}
}
catch (Exception ex)
{
log.Error(ex);
}
log.Info(result);
return result;
}
我认为您可以访问活动目录,这就是代码在本地运行但在 IIS 上应用程序池来自 ApplicationPoolIdentity 的 运行 的原因,它没有访问权限。
转到应用程序池并将身份更改为您的帐户。这是供您参考的图片: