我在ASP.NET核心项目中有一个API调用,在localhost中一切正常,但在IIS中不正常。我得到的错误是**"连接尝试失败,因为连接方在一段时间后没有正确响应,或建立的连接失败,因为连接的主机没有响应。"**
以下是StackTrace:
System.Net.Http.ConnectHelper.ConnectAsync(字符串主机、Int32端口、取消令牌、取消令牌)。(HttpRequestMessage请求,布尔值允许Http2,取消令牌取消令牌),位于System.Net.Http.HttpConnectionPool.CreateHttp11连接异步(HttpRequestMessage请求,取消令牌取消令牌)在System.Net上。Http.HttpConnectionPool。获取HttpConnectionAsync(HttpRequestMessage请求,取消令牌取消令牌)在System.Net上。Http。HttpConnectionPool。SendWithRetryAsync(HttpRequestMessage请求,布尔值doRequestAuth,取消令牌取消令牌)在System.Net上。Http。重定向处理程序。SendAsync(HttpRequestMessage请求,取消令牌取消令牌),位于系统. Net. Http.诊断处理程序. SendAsync(HttpRequestMessage请求,取消令牌取消令牌)在System.Net上。Http.HttpClient。完成发送异步未缓冲(任务1发送任务,HttpRequestMessage请求,取消令牌源cts,布尔型disposects)在AILS.移动.基础.控制器.实用程序控制器. GetPostRequest [T](字符串url,对象请求数据,布尔型getReq)
下面是调用API的代码:
BaseResponse<T> responseResult = new BaseResponse<T>();
Type _obj = typeof(T);
using (var client = new HttpClient())
{
try
{
UriBuilder builder = new UriBuilder(!url.Contains("handshake") ? GetCookie(ASMobileConstant.CookiesKey.BaseURL) + url : url);
HttpResponseMessage response = new HttpResponseMessage();
string content = string.Empty;
if (getReq)
{
response = await client.GetAsync(builder.Uri, HttpCompletionOption.ResponseHeadersRead);
response.EnsureSuccessStatusCode();
content = await response.Content.ReadAsStringAsync();
response.Dispose();
}
else
{
HttpContent httpContent = new StringContent(JsonSerializer.Serialize(requestData), System.Text.Encoding.UTF8, "application/json");
response = await client.PostAsync(builder.Uri, httpContent);
content = await response.Content.ReadAsStringAsync();
response.Dispose();
}
if (_obj != typeof(clsResponse))
{
responseResult = new BaseResponse<T>(JsonSerializer.Deserialize<clsResponse>(content));
}
else
{
responseResult = JsonSerializer.Deserialize<BaseResponse<T>>(content);
}
}
catch (Exception ex)
{
responseResult.IsGood = false;
responseResult.Message = ex.Message;
myLogger.Error("catch {0}", ex.Message);
myLogger.Error("catch {0}", ex.StackTrace);
}
finally
{
client.Dispose();
}
}
假设我的域名是www.example.com,URL将是http://xxx.ask.com/mobileapi/Loginxxx.ask.com, the url will be http://xxx.ask.com/mobileapi/Login
我已经使用 Postman 手动测试,它的工作完美。
我不知道可以设置在哪个设置上,请帮助。
问:HTTPS网站可以调用HTTP API吗?
提前感谢:)
1条答案
按热度按时间jogvjijk1#
问:HTTPS网站可以调用HTTP API吗?
浏览器安全性限制网页向提供该网页的域之外的其他域发出请求。此限制称为同源策略。同源策略限制(但不阻止)恶意站点从其他站点阅读敏感数据。若要从浏览器向具有不同来源的终结点发出请求,该终结点必须启用跨来源资源共享(CORS)。
有关详细信息,请参见Enable Cross-Origin Requests (CORS) in ASP.NET Core。