【发布时间】:2014-11-10 22:05:18
【问题描述】:
我的 Web Api 应用程序分布在更多服务器上。
我的情况是这样的:
---------------------
- LOAD BALANCER -
---------------------
----------- ------------- ------------- --------------
SERVER 1 SERVER 2 SERVER 3 SERVER 4
----------- ------------- ------------- --------------
我有服务器 ip 的列表。 执行的主要调用是:
http://webapidefault/mywebapi/v01/method
这个 url 使负载均衡器在请求必须执行时选择一个服务器。 我想在所有服务器上执行此操作。
我认为使用服务器的 IP 地址来编写 POST 请求,当其中一台服务器接收到主调用时,服务器本身将其他服务器调用为:
http://serverIP/mywebapi/v01/method
当我启动请求时,它会返回 401 unauthorize 错误。
我该如何解决这个问题?
我运行的代码如下:
[Route("methodtoperformonallservers")]
[HttpPost]
public ResponseMessageResult PerformAllServers()
{
var result = MyHelper.PerformAll();
if(result != -1)
{
return WebHelper.CreateResponseMessageResult(HttpStatusCode.OK, result);
}
else
{
return WebHelper.CreateResponseMessageResult(HttpStatusCode.InternalServerError, result);
}
}
我的助手将执行:
public static int PerformAll()
{
foreach( var serverIP in serverList)
{
var reqStr = http://serverIP/mywebapi/v01/methodtoperformonspecificserver;
var reqUri = new Uri(reqStr);
var myrequest = (HttpWebRequest)WebRequest.Create(reqUri);
myrequest.Method = "POST";
myrequest.ContentLenght = 0;
var response = (HttpWebResponse)request.GetResponse();
.
.
.
.
}
}
调用 GetResponse 时会抛出 401 异常。
我该如何解决我的情况?提前谢谢你。
最好的问候
【问题讨论】:
-
出了什么问题,您是如何解决的?
标签: c# asp.net-web-api