4

以下は、サンプルの自己ホスティング RestApi コードです。OWIN で作成しました。私のローカルマシンで動作しています。

私はそれを aws-ec2 でホストし、管理者として開始しました。

インスタンス内から (chrome/IE を使用して) RestApi にアクセスし、localhost を URL として指定できます。

インスタ内アクセス

しかし、localhost をインスタンスのパブリック DNS (インスタンスのブラウザー内で実行中) に置き換えると、不正なリクエストの無効なホスト名が返されます。

インスタンスの 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 から DNS 名に ping を実行しようとしましたが、成功しました。
  5. WebApi が使用している、ポート番号 - 65435 (エフェメラル ポート)
  6. Owin バージョン - 5.2.3.0、.Net バージョン - 4.5 (4.5.2 は EC2 インスタンスにインストールされています)
  7. コード内の「localhost」を public-dns (同じ問題が続く) および ip-address (例外をスローする - 「呼び出しのターゲットによって例外がスローされました。」) に変更しました。

受信ルール

アウトバウンド ルール

これを設定するのを手伝ってください.!!

4

2 に答える 2

0

WebApplocalhost で を開始しています:

http://localhost:65435

外部からアクセスしようとしている実際のイーサネット アダプターではなく、ループバック アダプターで開始されます。サーバーのIPで開始する必要があります。

于 2015-07-28T12:06:52.247 に答える