【发布时间】:2013-04-30 08:40:46
【问题描述】:
我有一个 Asp.net Web API 项目,它有几个 CRUD 方法。
在这些方法之上,我想添加一个读取Authorization 标头的授权服务并阻止用户访问资源(如果他们没有被授权)。
// Method on internal IP Project
public class InternalController : ApiController
{
public void Create(CreateRequest request)
{
// implement the method
}
}
// Method on public IP Project
public class ExternalController : ApiController
{
public async Task Create(CreateRequest request)
{
// validate Authorization header and throw exception if not valid
using (HttpClient client = new HttpClient())
{
string parameters = string.Format("param1={0}¶m2={1}", request.Param1, request.Param2);
client.BaseAddress = new Uri("http://192.168.1.1/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync("api/internal/create?" + parameters);
response.EnsureSuccessStatusCode();
}
}
}
有没有什么方法可以更轻松地将请求从外部 API“重定向”到内部 API?
现在,我必须手动重新创建我在 ExternalAPI 中收到的所有参数并在 InternalAPI 中发送它们,即使它们是相同的。
我可以让HttpClient 自动发送我在 ExternalAPI 方法中拥有的HttpRequestMessage (Request) 对象吗?
【问题讨论】:
-
InternalController和ExternalController在同一个 Web 项目上吗? -
不,它们是不同的项目
标签: c# asp.net asp.net-web-api httpclient