একটি এএসপি.নেট কোর অ্যাপ্লিকেশনটি হোস্ট করা হয় কীভাবে পোর্টটি নির্দিষ্ট করবেন?


191

WebHostBuilderকোনও Mainএন্ট্রি-পয়েন্টে ব্যবহার করার সময়, আমি কীভাবে এটির সাথে আবদ্ধ পোর্টটি নির্দিষ্ট করতে পারি?

ডিফল্টরূপে এটি 5000 ব্যবহার করে।

নোট করুন যে এই প্রশ্নটি নতুন এএসপি.নেট কোর এপিআই-র সাথে সুনির্দিষ্ট (বর্তমানে 1.0.0-আরসি 2 এ রয়েছে)।


10
ফোল্ডার launchSettings.jsonথেকে পরীক্ষা Properties। আপনি পোর্ট পরিবর্তন করতে পারেন launchUrl
ওলেগ

@ ওলেগ, আরসি 1 এর প্রকল্পের টেম্পলেট থেকে আমার আইআইএস সম্পর্কিত কিছু সেটিংস বাকি ছিল। তাদের কোনও প্রভাব ছিল না।
ড্র নোকস

কেউ ব্যবহার করতে পারেন hosting.json( উত্তর দেখুন ), যা আরসি 1 এ ডিফল্টরূপে ব্যবহৃত হয়েছিল এবং একটিতে কেবল যুক্ত করা দরকার .AddJsonFile("hosting.json", optional: true)( এখানে দেখুন )
ওলেগ

1
সম্পূর্ণরূপে ভিএস-নির্দিষ্ট মেকানিজম (লঞ্চসেটিংস.জসন) এর উপর নির্ভর করার চেয়ে কনফিগারেশন স্ট্যাকটি ব্যবহার করা অনেক বেশি ভাল বলে মনে হচ্ছে।
কেভিন চ্লেট

@DrewNoakes: আমি যোগ আমার পুরোনো উত্তর দিয়ে আপডেট 2 অংশ। এটি ডিফল্ট পোর্ট এবং hosting.jsonবাইন্ডিং কনফিগার করার জন্য কমান্ড লাইন ব্যবহারের কিছু পরিবর্তনের বর্ণনা দেয়।
ওলেগ

উত্তর:


235

এএসপি.নেট কোর 3.1 তে কাস্টম পোর্টটি নির্দিষ্ট করার জন্য 4 টি প্রধান উপায় রয়েছে:

  • আপনার .NET অ্যাপ্লিকেশনটি দিয়ে শুরু করে কমান্ড লাইন আর্গুমেন্টগুলি ব্যবহার করুন --urls=[url]:
dotnet run --urls=http://localhost:5001/
  • নোড appsettings.jsonযুক্ত করে ব্যবহার করুন Urls:
{
  "Urls": "http://localhost:5001"
}
  • এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে ASPNETCORE_URLS=http://localhost:5001/
  • ব্যবহার করে UseUrls(), যদি আপনি প্রোগ্রামটিমে এটি করতে পছন্দ করেন:
public static class Program
{
    public static void Main(string[] args) =>
        CreateHostBuilder(args).Build().Run();

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(builder =>
            {
                builder.UseStartup<Startup>();
                builder.UseUrls("http://localhost:5001/");
            });
}

বা, আপনি যদি এখনও জেনেরিক হোস্ট বিল্ডারের পরিবর্তে ওয়েব হোস্ট বিল্ডার ব্যবহার করেন:

public class Program
{
    public static void Main(string[] args) =>
        new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .UseUrls("http://localhost:5001/")
            .Build()
            .Run();
}

40
কোডে সরাসরি ইউআরএল ব্যবহার করা আমার মতে সেরা পছন্দ নয়।
ওলেগ

3
এটি পরীক্ষিত এবং এটি ভাল কাজ করে, ধন্যবাদ। @ ওলেগ, আপনি কী কনফিগার প্রয়োজন তা একটি উত্তর খুঁজে বের করতে পারেন? এটি একটি কনফিগার ফাইলে থাকা ভাল।
ড্র নোকস

4
@ ওলগ সম্ভবত, তবে UseUrlsস্ব-হোস্টিং পরিস্থিতিগুলির জন্য এএসপি.এনইটি টিমের প্রস্তাবিত পদ্ধতির ব্যবহার (মানটি নিজেই হার্ডকোড করা উচিত নয়, স্পষ্টতই)। এটি বলেছিল, কনফিগারেশন নির্মাতা ব্যবহার করে আপনি কীভাবে এটি করতে পারেন তা উল্লেখ করার জন্য আমি আমার উত্তর আপডেট করেছি।
কেভিন চ্লেট

1
@ পিনপয়েন্ট: আমি পুরানো উত্তর পোস্ট করেছি , যেখানে কেউ ব্যবহার করে কীভাবে বন্দর পরিবর্তন করতে হবে তা খুঁজে পেতে পারে hosting.json। একমাত্র জিনিসটি যা করতে হবে তা হ'ল আরসি 2-তে তথ্য পড়তে বাধ্য করা ( ঘোষণাটি দেখুন )।
ওলেগ

2
আপনার নিম্নলিখিত প্যাকেজটির প্রয়োজন হবে:using Microsoft.Extensions.Configuration.CommandLine;
শিখর

87

আপনি এসপ নেট কোর ২.১+ অ্যাপসেটেটিংস.জসন ফাইলে কেষ্টরেল বিভাগ সন্নিবেশ করতে পারেন।

  "Kestrel": {
    "EndPoints": {
      "Http": {
        "Url": "http://0.0.0.0:5002"
      }
    }
  },

3
আপনাকে ধন্যবাদ, আমার যা প্রয়োজন কেবল :-) ইউজআর্লসের চেয়ে ভাল ()। আরো বিস্তারিত: docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/...
KTCO

7
এটি প্রকৃতপক্ষে উত্পাদিত বাইনারিগুলির সাথে কাজ করে dotnet publish
আরএসএনএন


@ user12345 আইআইএস হোস্টিংয়ে, কেষ্টরেল গতিশীল পোর্ট বাইন্ডিং ব্যবহার করে।
Menxin

1
উদাহরণস্বরূপ নেট থেকে core.০ চলমান ওয়েব এপিআই, উজ্জ্বল !!!
vidriduch

57

ভিএস ডকার ইন্টিগ্রেশন সহ যে কেউ এই কাজ করতে সহায়তা করতে উত্তর অনুসরণ করুন। গুগল অ্যাপেনজিনে "নমনীয়" পরিবেশ ব্যবহার করে চালানোর জন্য আমার 8080 বন্দর পরিবর্তন করতে হবে।

আপনার ডকফাইফিলে আপনার নিম্নলিখিতগুলি দরকার:

ENV ASPNETCORE_URLS=http://+:8080
EXPOSE 8080

এবং আপনার পাশাপাশি ডকার-কমপোজ.আইএমএলে পোর্টটিও পরিবর্তন করতে হবে:

    ports:
      - "8080"

3
ধন্যবাদ, আমরা উইন্ডোজ কমান্ড প্রমটে একইভাবে ভেরিয়েবল সেট করতে পারি: সেট করুন এএসপিএনটেকেরি_উইউআরএলস = http: // *: 8080
পাভেল বিরিয়ুকভ

1
এটি আমার পক্ষে কাজ করছে না আপনি কি নিশ্চিত যে আপনি যা কিছু পরিবর্তন করেছেন তা এটিই? আপনার কি আপনার ইমেজ অফারওয়ার্ড বা ডকারের সাথে বিশেষ কিছু করার দরকার ছিল?
স্টিভ

এটি এত দিন হয়ে গেছে যে এটি পরিবর্তিত হতে পারে, তবে আমি যদি মনে করি তবে এটি করার দরকার ছিল আমার।
কেসি

ভিএস কোডে, আপনি অন্যান্য সেটিংসকে ওভাররাইড করতে লঞ্চ.জসনের বিভাগে "এনভিভি" বিভাগে "" এসপিএনইটিসিআরএইউআরএলএস ":" http: // +: 8080 "যুক্ত করতে পারেন।
গর্লোক

31

বিকল্প সমাধান হ'ল hosting.jsonপ্রকল্পের মূলটিতে একটি ব্যবহার করা ।

{
  "urls": "http://localhost:60000"
}

এবং তারপর ভিতরে Program.cs

public static void Main(string[] args)
{
    var config = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("hosting.json", true)
        .Build();

    var host = new WebHostBuilder()
        .UseKestrel(options => options.AddServerHeader = false)
        .UseConfiguration(config)
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();

    host.Run();
}

7
এটি আমার পক্ষে কাজ করে না। সার্ভার.আরলস হ'ল ইউআরএল এবং নিশ্চিত করুন যে আপনি প্রজেক্ট.জসনে "পাবলিকপশনস" এ প্রবেশ করেছেন: {"অন্তর্ভুক্ত": ["অ্যাপসেটিংস.জসন", "ওয়েবকনফিগ", "wwwroot", "হোস্টিং.জসন"]},
মণীশ জৈন

3
আমি তার উত্তরটি সঠিক সম্পত্তি দিয়ে আপডেট করেছি urls- ধন্যবাদ @ মনিশজাইন
তেত্রদেব

30

আপনি আপনার অ্যাপ্লিকেশনটিতে কোনও পরিবর্তন ছাড়াই হোস্টিং ইউআরএল নির্দিষ্ট করতে পারেন।

Properties/launchSettings.jsonআপনার প্রকল্প ডিরেক্টরিতে একটি ফাইল তৈরি করুন এবং এ জাতীয় কিছু দিয়ে এটি পূরণ করুন:

{
  "profiles": {
    "MyApp1-Dev": {
        "commandName": "Project",
        "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development"
        },
        "applicationUrl": "http://localhost:5001/"
    }
  }
}

dotnet runকমান্ডটি আপনার launchSettings.jsonফাইলটি বেছে নেবে এবং এটি কনসোলে প্রদর্শিত হবে:

C:\ProjectPath [master ≡]
λ  dotnet run
Using launch settings from C:\ProjectPath\Properties\launchSettings.json...
Hosting environment: Development
Content root path: C:\ProjectPath
Now listening on: http://localhost:5001
Application started. Press Ctrl+C to shut down. 

আরও বিশদ: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/ পরিবেশ


1
অ্যাপসেটেটিংস.জসনেও কাজ করবেন?
পাওলো

না, এটি থাকতে হবে [ProjectRoot]/Properties/launchSettings.jsonতবে সুন্দর জিনিসটি এটি কোনও বাধা ছাড়াই কাজ করে।
চেইম এলিয়াহ

5
এটি কেবল বিকাশের সময় কার্যকর, বাইনারিগুলির সাথে কাজ করে না। ব্যবহার করার জন্য dotnet runআপনার সোর্স কোড অ্যাক্সেস প্রয়োজন।
RSSenna

18

যদি ব্যবহার করা হয় dotnet run

dotnet run --urls="http://localhost:5001"

সঠিক উত্তর! ডকারে কাজ করে। সঙ্গে "0.0.0.0" শুধুমাত্র "স্থানীয় হোস্ট" প্রতিস্থাপিত
AndrewPt

17

। নেট কোর উপরে 2.2 পদ্ধতির মূল সমর্থন WebHost.CreateDefaultBuilder (আরগস) এর সাথে প্রধান সমর্থন

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

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
}

আপনি আপনার প্রকল্পটি তৈরি করতে পারেন এবং binএটির মতো কমান্ড চালাতে পারেন

dotnet <yours>.dll --urls=http://localhost:5001

বা বহু ইউআরএল সহ

dotnet <yours>.dll --urls="http://localhost:5001,https://localhost:5002"

আপনি ব্যবহার করা সহজ 'dotnet রান --urls = পারেন 0.0.0.0:5001 ' প্রকল্পের ডিরেক্টরির মধ্যে
oudi

12

ডকার পাত্রে হোস্ট করা হলে (আমার জন্য লিনাক্স সংস্করণ), আপনি একটি 'সংযোগ অস্বীকার' বার্তা পেতে পারেন। সেক্ষেত্রে আপনি আইপি ঠিকানা 0.0.0.0 ব্যবহার করতে পারেন যার অর্থ পোর্ট ফরওয়ার্ডিং ঠিক করার জন্য লোকালহোস্ট লুপব্যাকের পরিবর্তে "এই মেশিনের সমস্ত আইপি ঠিকানা" ।

public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .UseUrls("http://0.0.0.0:5000/")
            .Build();

        host.Run();
    }
}

5

বিকল্পভাবে, আপনি কমান্ড লাইনের মাধ্যমে অ্যাপ্লিকেশন চালিয়ে পোর্ট নির্দিষ্ট করতে পারেন।

কেবল কমান্ড চালান:

dotnet run --server.urls http://localhost:5001

দ্রষ্টব্য: যেখানে 5001 পোর্টটি আপনি চালনা করতে চান।


5

নেট কোর 3.1-এ কেবল মাইক্রোসফ্ট ডক অনুসরণ করুন এটি খুব সহজ: কেস্ট্রল-অ্যাসপেটকোর -৩.১

সংক্ষেপ:

  1. ক্রিয়েটডিফল্টবিল্ডারটিতে নীচে কনফিগার সার্ভিস বিভাগ যুক্ত করুন Program.cs:

    // using Microsoft.Extensions.DependencyInjection;
    
    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureServices((context, services) =>
            {
                services.Configure<KestrelServerOptions>(
                    context.Configuration.GetSection("Kestrel"));
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
  2. appsettings.jsonফাইলের জন্য নীচের বেসিক কনফিগারেশন যুক্ত করুন (মাইক্রোসফ্ট নিবন্ধে আরও কনফিগার বিকল্প):

    "Kestrel": {
        "EndPoints": {
            "Http": {
                "Url": "http://0.0.0.0:5002"
            }
        }
    }
  3. আপনার প্রকল্পে সিএমডি বা কনসোল খুলুন প্রকাশ / ডিবাগ / রিলিজ বাইনারি ফোল্ডার এবং চালান:

    dotnet YourProject.dll
  4. আপনার http: // লোকালহোস্ট: 5002 এ আপনার সাইট / এপিআই অন্বেষণ উপভোগ করুন


3

প্রোপার্টি / লঞ্চসেটেটিং.জসনে যান এবং আপনার অ্যাপ্লিকেশন এবং এটির অধীনে অ্যাপ্লিকেশন ইউআরএল সন্ধান করুন। আপনি দেখতে পাবেন, এটি লোকালহোস্ট চালাচ্ছে: 5000, আপনি যা খুশি তে এটি পরিবর্তন করুন। এবং তারপরে ডটনেট রান ...... হুররে ray


0

আমি নীচেরটি ব্যবহার করে নেট কোর 3.1 এ বন্দর ইস্যুটি ঠিক করেছি

প্রোগ্রামে

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

    public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args)
        .ConfigureWebHost(x => x.UseUrls("https://localhost:4000", "http://localhost:4001"))
        .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
}

আপনি ব্যবহার করে অ্যাপ্লিকেশন অ্যাক্সেস করতে পারেন

http://localhost:4000

https://localhost:4001
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.