c# - Web API 自托管客户端配置

标签 c# .net asp.net-web-api self-host-webapi

我设法在控制台应用程序中使用 OWIN 运行我的自托管 WEP API,方法是使用如下代码启动它:

//string baseAddress = "http://192.168.1.6:8111/";
string baseAddress = "http://+:8111/";

// Start OWIN host 
using (Microsoft.Owin.Hosting.WebApp.Start<Startup>(url: baseAddress))
{
    Console.ReadLine();
}

通过在服务主机上使用和注册像“http://+:9000/”这样的地址,我们的想法是为主机使用通用 IP 地址,当主机的 IP 可能发生变化时不会影响客户端。

客户端在运行服务的机器之外的其他机器上。诸如来自 LAN 的手机或来自 LAN 的另一台笔记本电脑之类的东西,如果可能的话,将来也可以在 LAN 之外。

在我的自托管服务的客户端(一个 html 页面)中,我有一段 JavaScript 代码:

//var uri = 'http://192.168.1.6:8111/api/tests';
var uri = 'http://+:8111/api/tests';

function Read()
{
    $.getJSON(uri + '/' + id)
}

通过在客户端使用主机的静态注释 IP 地址,我可以访问自托管的 WEB API,但是当我尝试使用通用的“http://+:9000/api/tests”时,它无法连接到该服务。

有没有办法使用这种通用配置从客户端连接到服务? 或者我应该如何配置服务主机和客户端,以便主机上的 IP 更改不会停止客户端机器上的服务?

我需要考虑到我的自托管机器的 IP 地址可能会更改,并且客户端将失去连接,因为它们将使用服务主机的旧 IP 地址。

最佳答案

如果客户端在同一个 LAN 中,您可以通过名称而不是 IP 地址请求主机。

要查找主机名,请在主机上打开命令提示符并键入:hostname

它将显示主机名,例如 myhost。然后您可以将其请求为 http://myhost:8111 或任何端口。

对于 LAN 之外的客户端,您必须使用 DNS。如果可以的话,也可以通过 VPN 连接。

关于c# - Web API 自托管客户端配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48733572/

相关文章:

c# - 如何将可编辑的组合框添加到 System.Windows.Forms.PropertyGrid?

.net - 手动在ASCII和.NET字符之间转换

asp.net-mvc - 尚未为此应用程序配置 session 或请求错误

javascript - 将 javascript 变量 “11:00 AM” 转换为 c# 等效项,其中 SQL 为时间格式

c# - 将 DataTable 插入存储过程中的表中

c# - Xamarin App 中的认知服务异常

c# - ASP.Net Core 2.1 中间件 WindowsPrincipal ClaimsPrincipal

c# - WPF - 如何判断引发 ComboBox_SelectionChanged 事件的原因

c# - 确定 DataGridView 中的单元格位置

c# - 创建 Controller 失败,表明 Controller 需要无参数公共(public)构造函数