पोर्ट को कैसे निर्दिष्ट करें ASP.NET कोर अनुप्रयोग होस्ट किया गया है?


191

प्रवेश-बिंदु WebHostBuilderमें उपयोग करते Mainसमय, मैं उस पोर्ट को कैसे निर्दिष्ट कर सकता हूं जिसे वह बांधता है?

डिफ़ॉल्ट रूप से यह 5000 का उपयोग करता है।

ध्यान दें कि यह प्रश्न नए ASP.NET Core API (वर्तमान में 1.0.0-RC2) के लिए विशिष्ट है।


10
फ़ोल्डर launchSettings.jsonसे जाँच करें Properties। आप पोर्ट को बदल सकते हैं launchUrl
ओलेग

@ फिर, मेरे पास RC1 के प्रोजेक्ट टेम्प्लेट से कुछ IIS संबंधित सेटिंग्स थीं। उनका कोई प्रभाव नहीं पड़ा।
आकर्षित नोक

एक hosting.json( जवाब देखें ) का उपयोग कर सकते हैं , जो कि आरसी 1 में डिफ़ॉल्ट रूप से उपयोग किए गए थे और एक को बस जोड़ने की जरूरत है .AddJsonFile("hosting.json", optional: true)( यहां देखें )
ओलेग

1
कॉन्फ़िगरेशन स्टैक का उपयोग करना वास्तव में विशुद्ध रूप से वीएस-विशिष्ट तंत्र (लॉन्चसेटिंग.जसन) पर निर्भर होने से बेहतर लगता है।
केविन शैले

@DrewNoakes: मैंने अपने पुराने उत्तर को 2 भाग के साथ जोड़ा । यह डिफ़ॉल्ट पोर्ट को बदलने और hosting.jsonबाइंडिंग को कॉन्फ़िगर करने के लिए कमांड लाइन के उपयोग की कुछ भिन्नता का वर्णन करता है ।
ओलेग

जवाबों:


237

ASP.NET Core 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
यह परीक्षण किया और यह अच्छी तरह से काम करता है, धन्यवाद। @ फिर, क्या आप एक जवाब दिखा सकते हैं कि आपको किस कॉन्फ़िगरेशन की आवश्यकता है? यह एक config फाइल में होना अच्छा हो सकता है।
आकर्षित नोक

4
@ हो सकता है, लेकिन UseUrlsसेल्फ-होस्टिंग परिदृश्यों के लिए ASP.NET टीम द्वारा सुझाए गए दृष्टिकोण का उपयोग करना (मूल्य स्वयं को हार्डकोड नहीं होना चाहिए, जाहिर है)। उस ने कहा, मैंने अपने उत्तर को यह उल्लेख करने के लिए अद्यतन किया कि आप कॉन्फ़िगरेशन बिल्डर का उपयोग करके कैसे कर सकते हैं।
केविन शैले

1
@Pinpoint: मैंने पुराना उत्तर पोस्ट किया है , जहां कोई पा सकता है कि पोर्ट का उपयोग कैसे किया जाए hosting.json। केवल एक चीज, जिसे करना है वह आरसी 2 में जानकारी को पढ़ने के लिए मजबूर कर रहा है ( घोषणा देखें )।
ओलेग

2
आपको निम्नलिखित पैकेज की आवश्यकता होगी:using Microsoft.Extensions.Configuration.CommandLine;
शिक्षार्थी

87

आप asp.net core 2.1+ appsettings.json फ़ाइल में Kestrel अनुभाग सम्मिलित कर सकते हैं।

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

3
धन्यवाद, बस मुझे क्या चाहिए :-) UseUrls से बेहतर ()। अधिक जानकारी: docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/…
KTCO

7
यह वास्तव में उत्पन्न बायनेरिज़ के साथ काम करता है dotnet publish
रासना

क्या यह परिभाषित नहीं है कि Kestrel को IIS में होस्ट किए गए पोर्ट के बजाय IIS (प्रॉक्सी) से बांधा गया है?
user12345

@ user12345 IIS होस्टिंग में, Kestrel डायनामिक पोर्ट बाइंडिंग का उपयोग करता है।
मेनक्सिन

1
भी netcore 3.0 के साथ काम करता है exe, चलिए से वेब एपीआई चल रहा है !!!
विदुरिचुक

57

VS डॉक्यू एकीकरण के साथ ऐसा करने में किसी की मदद करने के लिए उत्तर का पालन करें। मुझे google appengine में "लचीले" वातावरण का उपयोग करके चलाने के लिए 8080 को बदलने की आवश्यकता है।

आपको अपने Dockerfile में निम्नलिखित की आवश्यकता होगी:

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

और आपको docker-compose.yml में पोर्ट को भी संशोधित करना होगा:

    ports:
      - "8080"

3
धन्यवाद, हम वैरिएबल को विंडोज़ कमांड में उसी तरह सेट कर सकते हैं, जिस तरह से सेट करें: ASPNETCORE_URLS = http: // *: 8080
पावेल बिरुकोव

1
यह मेरे लिए काम नहीं कर रहा है। क्या आपको यकीन है कि यह सब आप संशोधित है? क्या आपको अपनी छवि के बाद कुछ विशेष करने की जरूरत है या कुछ करने वाले के साथ?
स्टीव

यह इतना लंबा हो गया है कि यह बदल गया हो सकता है, लेकिन अगर मुझे याद है कि मुझे वह सब करना चाहिए था।
केसी

VS कोड में, आप अन्य सेटिंग्स को ओवरराइड करने के लिए लॉन्च के "env" अनुभाग पर "ASPNETCORE_URLS": "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
यह मेरे लिए काम नहीं किया। server.urls अब urls है और सुनिश्चित करें कि आप project.json "publishOptions" में प्रविष्टि जोड़ें: {"शामिल करें": ["appsettings.json", "web.config", "wwwroot", "hosting .json"]},
मनीष जैन

3
मैंने उनके उत्तर को सही संपत्ति के साथ अद्यतन किया urls- धन्यवाद @ मनिजैन
तेतरदेव

30

आप अपने ऐप में कोई बदलाव किए बिना URL होस्ट कर सकते हैं।

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/en परिवेश


1
AppSettings.json में भी काम करते हैं?
पौलो

नहीं, इसमें होना है [ProjectRoot]/Properties/launchSettings.json, लेकिन सुंदर चीज है, यह बिना किसी अड़चन के काम करता है।
चाम एलियाह

5
यह केवल विकास के दौरान उपयोगी है, बायनेरिज़ के साथ काम नहीं करता है। उपयोग करने के लिए dotnet runआपको स्रोत कोड तक पहुंच की आवश्यकता होती है।
रासेन

18

यदि उपयोग कर रहे हैं dotnet run

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

एकदम सही जवाब! कर्ता में काम करता है। "0.0.0.0" के साथ केवल "लोकलहोस्ट" बदला गया
एंड्रयूज

17

ऊपर .net core 2.2 विधि मुख्य समर्थन WebHost.CreateDefaultBuilder (args) के साथ आता है

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"

आप परियोजना निर्देशिका में ' डॉटनेट रन --urls = 0.0.0.0:5001 ' का उपयोग करने के लिए सरल कर सकते हैं
oudi

12

जब docker कंटेनर (मेरे लिए लिनक्स संस्करण) में होस्ट किया जाता है, तो आपको एक 'कनेक्शन अस्वीकृत' संदेश मिल सकता है। उस स्थिति में आप पोर्ट अग्रेषण को ठीक करने के लिए लोकलहोस्ट लूपबैक के बजाय आईपी ​​एड्रेस 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 पर सिर्फ माइक्रोसॉफ्ट डॉक का पालन करें कि यह बहुत आसान है: केस्टेलर-एस्पनेटकोर-3.1

संक्षेप में:

  1. CreateDefaultBuilder पर निम्न कॉन्फ़िगर कॉन्फ़िगर करें अनुभाग जोड़ें 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फ़ाइल के लिए नीचे मूल कॉन्फ़िगर जोड़ें (Microsoft आलेख पर अधिक कॉन्फ़िगर विकल्प):

    "Kestrel": {
        "EndPoints": {
            "Http": {
                "Url": "http://0.0.0.0:5002"
            }
        }
    }
  3. अपनी परियोजना पर CMD या कंसोल खोलें / प्रकाशित करें / बायनेरी फ़ोल्डर प्रकाशित करें और चलाएं:

    dotnet YourProject.dll
  4. अपने http: // localhost: 5002 पर अपनी साइट / एपी की खोज का आनंद लें


3

प्रॉपर्टीज / लॉन्चशेटिंग.जॉसन पर जाएं और अपना ऐपनाम ढूंढें और इसके तहत, एप्लिकेशनयूआरएल ढूंढें। आप देखेंगे, यह लोकलहोस्ट चल रहा है: 5000, इसे आप जो चाहें बदल दें। और फिर डॉटनेट रन ...... हुर्रे चलाएं


0

मैंने नेट कोर 3.1 में पोर्ट इश्यू को निम्नलिखित का उपयोग करके ठीक किया

Program.cs में

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.