【问题标题】:Need to access my VM Windows 8 Local IIS from my Mac OS X host machine需要从我的 Mac OS X 主机访问我的 VM Windows 8 Local IIS
【发布时间】:2015-09-30 08:12:35
【问题描述】:

我在我的 Mac OS X(Xamarin Studio 或本地语言)上进行所有移动开发,并使用 Parallels 在 Visual Studio 中运行我的 Microsoft Azure 移动服务后端。 我已经到了要测试我的 Azure 移动 API 的地步,但我不想针对每个更改发布服务并对其进行调试。

我的问题是,我部署到我的 IIS,无论是快递还是本地,在我的 Mac 物理主机上查看 API 的着陆页方面工作正常,但只要我点击试用,我就会收到一条身份验证消息,检查屏幕截图,我现在不希望应用任何安全性。

如何禁用它并从我的 Mac 以及最终从我的移动项目中测试我的 Azure 移动服务 API。

[编辑]

我应该提到,在我的 VM Windows 8 中,IIS 运行正常,我无需任何用户名/密码即可访问 API。

[编辑 2] 来自@lindydonna 的回答。

代理似乎工作正常,因为我可以从我的 Mac 调用 localhost/MyApiService,它会转到我的 Windows 8 VM 本地 IIS 服务器。

所以我可以访问 API 服务器、所有控制器及其端点,您选择一个端点并获取示例屏幕,单击尝试并无法完成 HTTP 请求,404/NotFound 错误。见截图。

gist 中 GET 请求的 BODY。

以上是本地 IIS 设置中的问题,因为在尝试 Azure 移动服务测试页面时,相同的行为适用于 Windows 8 VM 环境。

我使用 Postman 让它工作,它正确返回 JSON 数据,iOS 模拟器似乎不适用于 localhost。 MobileServiceContext 在尝试拉取时抛出异常。

protected virtual async Task PullAsync (IMobileServiceTableQuery<TEntity> query)
{
    try {
        await Initialization;
        IMobileServiceSyncTable<TEntity> entityTable = GetTable ();
        await entityTable.PullAsync (typeof(TEntity).ToString (), query); // <-- The System.Net.WebException thrown here.
        await entityTable.PurgeAsync ();
    } catch (MobileServiceInvalidOperationException preconditionFailedEx) {
            Debug.WriteLine(preconditionFailedEx.Message);
    }
}

【问题讨论】:

  • 当您从运行 IIS 的虚拟机尝试此请求时会发生什么?此外,尝试在 Mac 上使用 Postman(Chrome 扩展程序)发送请求。现在正在浏览帮助页面,这可能会产生一些奇怪的东西。如果这不起作用,请尝试本教程中的步骤:azure.microsoft.com/en-us/documentation/articles/… 使您的应用程序自托管。
  • @lindydonna 谢谢,它适用于 Postman。关于测试页面错误,我实际上用Windows VM测试了我的本地IIS,它具有相同的效果,它必须与IIS设置有关。我无法访问 IIS Express,但已经足够好了。从我的 Xamarin 解决方案中,虽然我从模拟器中收到连接错误。差不多了。更新了截图。

标签: iis virtual-machine azure-mobile-services


【解决方案1】:

将用户名留空并使用您的应用程序或主密钥作为密码。

也在这里回答:Authentication for Azure Mobile Web Services test pages

【讨论】:

  • 是的,如果服务发布到云中,则此方法有效,而不是尝试在本地访问它时。我尝试的第一件事
  • 啊,所以在本地 VM 上运行时,您无法从 Mac 访问它?这是因为我们只允许 localhost 访问本地部署的实例作为安全保护。我会研究是否有办法禁用它。
  • 我将不胜感激,谢谢。当您开发跨平台并希望通过网络机器访问 API 以进行测试时,您知道这很有意义。
  • 完全有道理。我给团队发了一条消息,所以希望我能得到答复。最坏的情况,星期一。 :(
  • 谢谢克里斯,感激不尽。
【解决方案2】:

问题在于您的 IIS Express 实例被配置为不接受外部网络连接作为安全预防措施,并且 Parallels VM 被视为不同的机器。

最简单的解决方案是遵循这个 Fiddler 教程:Configure Fiddler for Mac,它将把 Fiddler 设置为 VM 上的代理。

然后,在您的 Mac 上,您应该修改网络设置并添加连接到 Fiddler 代理 (http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureForMac#configure-mac-) 的代理设置。您的 iOS 模拟器将获取这些代理设置。

注意:Fiddler 设置会在 VM 上打开一个端口,一旦您不再使用它,就应该将其关闭,以作为安全预防措施。

此外,根据此回复 (iOS 8 / Xcode 6 Simulator is not using HTTP Proxy anymore),您还需要重新启动 iOS 模拟器,以便它采用新设置。

【讨论】:

    猜你喜欢
    • 2021-12-26
    • 2017-06-17
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 2013-02-19
    • 1970-01-01
    相关资源
    最近更新 更多