【问题标题】:Unable to Access Owin Self hosted RestApi - Deployed to AWS EC2 - Windows 2012 R2无法访问 Owin 自托管 RestApi - 部署到 AWS EC2 - Windows 2012 R2
【发布时间】:2017-11-13 03:20:59
【问题描述】:

以下是我使用 OWIN 创建的示例自托管 RestApi 代码。 它在我的本地机器上工作。

我将它托管在 aws-ec2 中,并以管理员身份启动。

我可以从实例内部访问 RestApi(使用 chrome/IE),将 localhost 作为 url。

但是当我用实例的公共 DNS 替换本地主机(在实例的浏览器中运行)时,得到一个错误的请求无效的主机名。

当我尝试从本地机器(浏览器/邮递员)的实例浏览器外部访问 RestApi 时,它返回状态 0。

复制下面的代码。

class Program {
    static void Main(string[] args) {
        const string BaseUri = "http://localhost:65435";
        Console.WriteLine("Starting web Server...");
        WebApp.Start<Startup>(BaseUri);
        ...
    }
}

public class Startup {
    public void Configuration(IAppBuilder app) {
        var webApiConfiguration = ConfigureWebApi();
        app.UseWebApi(webApiConfiguration);
    }

    private HttpConfiguration ConfigureWebApi() {
        var config = new HttpConfiguration();
        config.Routes.MapHttpRoute(
            "DefaultApi",
            "api/{controller}/{id}",
            new { id = RouteParameter.Optional });
        return config;
    }
}

public class CompaniesController : ApiController {
    public IEnumerable<Company> Get() {
        return new List<Company>(){
                       new Company() { Id = 1, Name = "Microsoft" },
                       new Company() { Id = 2, Name = "Amazon" }
                   };
    }
}

我创建了一个 Windows 2012 R2 - AWS EC2 实例。

配置实例:

  1. 允许入站和出站的所有流量。
  2. 打开所有端口。
  3. 我已禁用 Windows 防火墙
  4. 我尝试从本地计算机 cmd ping DNS 名称,并且成功。
  5. WebApi 正在使用,端口号 - 65435(临时端口)
  6. Owin 版本 - 5.2.3.0,.Net 版本 - 4.5(EC2 实例上安装了 4.5.2)
  7. 将代码中的“localhost”更改为 public-dns(同样的问题仍然存在)和 ip-address(抛出异常 - “调用目标已抛出异常。”)

请帮我配置一下。!!

【问题讨论】:

  • 对我来说,您的网络服务器似乎没有在侦听该主机名,而只是在侦听 localhost(可能还有 ip)
  • 我已尝试将该实例的“localhost”更改为“public dns”。问题仍然存在。
  • 这是重复的,请参阅我对相同问题的回复stackoverflow.com/a/32483013/610390
  • 嘿萨林,你解决过这个问题吗?如果可以,可以分享一下吗?谢谢。
  • 嘿,我无法解决问题。我切换到 GCE 而不是 AWS。它在 GCE 上运行良好

标签: amazon-web-services asp.net-web-api owin self-hosting windows2012


【解决方案1】:

您正在本地主机上启动WebApp

http://localhost:65435

它在环回适配器上启动,而不是在您尝试从外部访问的实际以太网适配器上启动。您需要使用服务器的 ip 启动它。

【讨论】:

  • 我已将“localhost”替换为 aws 实例的“公共 dns”。但没有运气,我会尝试使用 IP 地址。
  • 是的,那有什么作用吗?
  • 否,在提供 IP 地址时,应用程序会引发异常。 “调用的目标已抛出异常。”
  • 可能的权限问题?即使在本地机器上,我也需要提升权限来托管服务。可能与防火墙问题相结合,因此请确保您打开所需的端口以进行远程访问。
【解决方案2】:

如果没有人能解决这个问题,那么 OWIN 对我来说毫无用处。 “切换回 IIS”

【讨论】:

    猜你喜欢
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多