Self host Web API

0

Witam, muszę napisać apkę do zarządzania danymi przez Restfull API. Wymóg jest taki aby była uruchamiana w trybie self host (aplikacja konsolowa) nasłuchująca na dowolnym porcie. Pytanie czy da się w ten sposób zrobić aby było na dowolnym porcie ? Bo wszelkiego rodzaju przykłądy pokazują konkretny port. I kolejne pytanie. Czy powinienem np stworzyć aplikację konsolową jako nowy projekt i doinstalować odpiednie składniki (OWIN) czy stworzyć webapi projekt i go w jakiś sposób skonfigurować. Bo działałem na aplikacjach (asp mvc ) które startowały jako listener więc pewnie można to zrobić w ten sposób.

0

Nie chodzi przypadkiem aby każdy port słuchać na osobnym Thread?

0

Witam, muszę napisać apkę do zarządzania danymi przez Restfull API. Wymóg jest taki aby była uruchamiana w trybie self host (aplikacja konsolowa) nasłuchująca na dowolnym porcie

Kto ci kazał coś "takiego" zrobić.... :|

0

API korzysta z portu 80 (domyślnie dla http) i chyba 443 dla https. Jeśli te porty są u ciebie zajęte przez inne aplikacje to twoje API nie odpowie. Ja mam self-hosted API i wyrzuciłem port z url i moje API działa (po localhost) ale tylko dlatego nie, że nie mam niczego na kompie co zajmuje port 80.

0

Możesz zrobić tak aby apka przyjmowała port na którym ma pracować np dotnet app.dll -port 5000 ale zajmowanie wszystkich portów to na moje głupota... Skąd ten pomysł?

1

Na dowolnym porcie się da,ale trzeba ustawić konkretny. Gdybyś chciał na wszystkich,nawet gdyby sie to dalo jakos skonfigurować, to musiałbyś mieć otwarte wszystkie porty na firewallu. Śmiem twierdzić, że nie da się na wszystkich na raz w normalnej konfiguracji. I nie ma to sensu.

Już może lepiej to na jakimś routerze ustawić żeby Ci przekazywał wszystko co do niego przychodzi na jakiś jeden port w aplikacji api.

0

No ale nie jest tak że domyślnie jest port 80 lub 443? Czyli jak nie ustawisz portu to i tak pójdzie na domyślnych. Czy w ogóle jest opcja żeby to samo API chodzi na więcej niż jednym porcie?

0

Nie wiem.
Ja nigdy nieustawialem aplikacjom self hostel A pi standardowych portów bo zwykle coś na nich już było. A często mam kilka aplikacji A pi i każda ma jakiś swój port wysoki od 8000 w górę.

0

Ja też ustawiam wysokie porty, ale z czystej ciekawości, czy w ogóle jest to możliwe

using Microsoft.Owin.Hosting;
using System;
using System.Net.Http;

namespace OwinSelfhostSample 
{ 
    public class Program 
    { 
        static void Main() 
        { 
            string baseAddress = "http://localhost:9000/"; 
            var app = WebApp.Start<Startup>(url: baseAddress); // TUTAJ ZACZYNA SIĘ PROBLEM
        } 
    } 
 }

Dobrze rozumiem? Trzeba by było stworzyć tyle obiektów WebApp.Start ile różnych portów chcemy?

0

Raczej tak..

0

Trochę nie rozumiem jak z "dowolnego portu" doszedłeś do tego, że ma działać równocześnie na wielu portach...

0

Jak chcesz to zrobić nie mówiąc swojej aplikacji, że ma słuchać na wszystkich innych, nie tylko na 80 czy 443?

0

Ale co?
Jak dla mnie dowolny port to np. 80 lub 3333 lub 40000 lub 41000 itd., ale nie więcej niż 1 na raz.

Nie widzę nigdzie w poleceniu żeby api miało działać na wielu portach jednocześnie.

0

Pytanie czy da się w ten sposób zrobić aby było na dowolnym porcie ? Bo wszelkiego rodzaju przykłądy pokazują konkretny port.

Dowolny a konkretny. Źle zadane pytanie nie znaczy, że źle rozumiemy.
Skoro pyta o dowolny port, ale nie konkretny to o jaki pyta?

1

No właśnie, jak z dowolnego doszedł do tego, że to nie ma być jeden konkretny tylko wiele różnych portów? (o to samo pytałem w pierwszym poście)

IMO zadanie jest proste, trzeba zrobić self host API, które będzie nasłuchiwało na jednym dowolnym porcie, bo nie widzę sensu żeby słuchało równocześnie na kilku różnych.

0

Chyba to jest już czepianie się słówek. Myślisz, że aż tak nie ogarnia, że nie spróbował, zamiast portu 9000 z przykładu, wpisać inny?

0

Mógł próbować, ale mógł nie zrozumieć polecenia.

Dlatego pytam jak wywnioskował, że ma działać na wielu portach jednocześnie i jaki to ma mieć sens...

0

Fakt, sensu to to nie ma, ale z czystej ciekawości bym się dowiedział czy to realne.

0

No raczej źle zrozumiałem, bo nie da się raczej tak aby nasłuchiwała na wszystkich portach jednocześnie.

0

Może nie jest tak, że się nie da, ale jest to raczej głupie. Druga sprawa nawet jeśli byś zrobił kilkaset obiektów, tak jak pisałem w którymś komentarzu wcześniej, to nie wiem ile pamięci byś musiał mieć na takie API.

1 użytkowników online, w tym zalogowanych: 0, gości: 1