从 Web API 访问 IIS Express

Posted

技术标签:

【中文标题】从 Web API 访问 IIS Express【英文标题】:Access IIS Express from Web API from 【发布时间】:2018-11-16 14:53:07 【问题描述】:

首先让我说这曾经在 Visual Studio 2015 中工作,但我很难让它在 Visual Studio 2017 中工作。

我有一个在 Visual Studio 2017 中运行的 WebAPI 项目。我已经在 ...\ProjectName.vs\config 文件中编辑了 applicationhost.config 文件,因此它具有我的项目的以下条目。

            <bindings>
                <binding protocol="http" bindingInformation="*:56952:localhost" />
                <binding protocol="http" bindingInformation="*:56952:192.168.1.155" />
            </bindings>

我的防火墙已完全禁用。当我尝试在 Win10 Mobile V10.0.15254.0 模拟器上运行我的 Xamarin 表单项目时,我的应用程序未连接到 WebAPI。 (我得到标准“找不到与此错误代码相关的文本。无法建立与服务器的连接。”

如果我在模拟器上启动 Edge 并尝试使用 IP 地址访问网络上的任何本地服务器,则可以。有人可以告诉我发生了什么变化以及我现在如何才能完成这项工作吗?

【问题讨论】:

您使用的是 XF 项目的 IP 吗?您可以在模拟器中从 Edge 访问您的服务端点吗? 是的 - 我的 XF 项目中 WebAPI 的 URL 如上所示 -192.168.1.155:56952。不,我无法使用相同(或任何形式)的 URL 从模拟器上的 Edge 浏览器直接访问 WebAPI。 这听起来像是网络问题 嗯,有一些已知的配置项需要为模拟器设置才能访问本地机器上的 WebAPI - 这是已经知道的。它以前工作过。我只是询问该设置是否已随 VS 2017 更改,因为现在我无法再在 Visual Studio 中以调试模式访问 WebAPI。 【参考方案1】:

所以问题是我使用的 IP 地址。以下是我用来解决此问题的步骤:

    我启动了我的 Windows 10 移动模拟器。 点击模拟器工具栏中的>>(工具)图标。 单击“附加工具”窗口的“网络”选项卡。 我查看了标有桌面适配器 #1 的网络适配器列表并复制了 IP 地址。 编辑 WebAPI 项目文件夹中的 Applicationhost.config 文件。 在文件中找到 site name="XXXXX" 的条目,其中 XXXXX 是您托管 WebAPI 的 Visual Studio 项目的名称。

    在您的 WebAPI 项目条目的 &lt;bindings&gt; 部分中,为您在第 4 步中复制的 IP 地址添加绑定。它应该如下所示:

    <binding protocol="http" bindingInformation="*:56952:169.254.69.220" />
    

其中 56952 是我的 IIS Express 托管 WebAPI 的端口,169.254.69.220 是我从第 4 步复制的 IP 地址。

添加后,我能够连接到 IIS Express 中本地托管的 WebAPI。

希望这会有所帮助。

【讨论】:

以上是关于从 Web API 访问 IIS Express的主要内容,如果未能解决你的问题,请参考以下文章

不允许用于访问此页面的 HTTP 谓词 Web Api IIS 7

Asp.net web api iis使用

从 iis (C# API) 访问 azure 文件共享

如何在没有 Visual Studio 的情况下发布 ASP.NET Web API?

如何在 IIS 中授予 Web api 应用程序写入权限?

在 IIS 中托管可以从任何 Web 客户端访问的网站?