2018/03/08

ASP.NET Core アプリが Linux で表示できない場合の解決方法


ASP.NET Core アプリを Linux, 今回は CentOS7 にデプロイして dotnet xxx.dll で実行したのですが、デフォルトのポートである 5000番ポートに http://<IPアドレス>:5000/ でアクセスしてもタイムアウトエラーが発生してしまうという現象が発生して困っていました。

 

基本的な設定として、firewalld でポートは開放してありました。これに引っかかる人も多いと思うので、一応設定方法を書いておきます。5000番ポートを開放します。

$ sudo firewall-cmd --zone=public --add-port=5000/tcp --permanent
$ sudo firewall-cmd --reload

なかなか原因が特定できなかったのですが、ASP.NET Core のデフォルト Web サーバである Kestrel が外部からのアクセスをデフォルトで拒否していることが原因だと分かりました。

この問題を解決するには、Program.cs に UseUrls を以下のように追加して再度デプロイします。

    public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseUrls("http://*:5000/")
                .Build();
    }

これで、Linux の外部からアクセスしても、ASP.NET Core アプリを表示できるようになりました。


スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。なんちゃってSE。

    フリーウェア、Webサービス開発のためにEntyで支援を受け付けています。ご支援のほどよろしくお願いいたします。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。


    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ
    >>ブログ詳細

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから


最近の記事