gpt4 book ai didi

c# - 使用 Owin 在自托管的 Web API 中获取远程主机 IP

转载 作者:太空狗 更新时间:2023-10-30 00:14:52 25 4
gpt4 key购买 nike

我需要一件非常简单的事情——在 Web API Controller 中获取远程主机 IP 地址。 This帖子描述了当您进行网络托管或自托管时如何执行此操作。不幸的是,所描述的解决方案不适用于 Web API self-hosted using Owin (好吧,我无法让它工作:))。我使用 Windows 服务来托管 Web API。

所以,问题是:如何使用 Owin 在 Windows 服务中自托管的 Web API Controller 中获取远程主机 IP 地址

我需要远程IP地址的 Controller :

internal class ItemController : ApiController
{
[HttpPost]
public HttpResponseMessage AddItem([FromBody] string data)
{
// Need to get remote host IP address here

return Request.CreateResponse(HttpStatusCode.OK);
}
}

启动配置Web API的类:

internal class StartUp
{
public void Configuration(IAppBuilder appBuilder)
{
var httpConfig = new HttpConfiguration();

httpConfig.Routes.MapHttpRoute(
name: "Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

appBuilder.UseWebApi(httpConfig);
}
}

我使用 Windows 服务来托管 Web API。下面是服务的 OnStart 方法:

    protected override void OnStart(string[] args)
{
var baseAddress = "http://localhost:5550/";
// Start OWIN
WebApp.Start<StartUp>( url: baseAddress );
}

谢谢!

最佳答案

您应该可以通过执行以下操作来获取它:

OwinContext owinContext = (OwinContext)webapiHttpRequestMessage.Properties["MS_OwinContext"];
string ipaddress = owinContext.Request.RemoteIpAddress;

关于c# - 使用 Owin 在自托管的 Web API 中获取远程主机 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19848047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com