Comment puis-je obtenir le kestrel serveur web pour écouter de la non-requêtes localhost?
J'ai déployé mon c#, asp.net 5, mvc 6 application à un serveur windows 2008. J'ai tiré dnx web
et il est à l'écoute pour le port 5000 et fonctionne très bien lors de l'accès à l'ordinateur local.
Comment puis-je obtenir pour écouter de la non-requêtes localhost?
P. S. Ce question n'est pas un duplicata de celui-ci...il se réfère à asp.net pré RC1 lors de l'hébergement.ini effectivement eu un .format ini. Maintenant, c'est du JSON et je ne trouve pas de documentation sur ce qui doit être réellement en elle.
P. P. S., La vraie solution est dans le non-accepté réponse à la question, avec un énorme inconvénient. Étapes:
- Changement de votre projet.json par la lié réponse.
- Publier votre projet sur votre serveur.
- Sur le serveur, allez à la ...\approot\src\Votreprojet dossier et ouvrez une fenêtre de commande il.
- Exécuter
dnx web
- il échouera - Exécuter
dnu restore
- Run 'dnu construire"
- Run 'dnx web" - le serveur web devrait maintenant démarrer un
- Double Possible de ASP.NET 5 Kestrel se connecter dans les LAN
- Bien la deuxième réponse dans la question fait référence au format JSON. Il n'est pas utile pour vous?
- J'ai essayé aussi, et d'abord, il s'est écrasé le serveur web au démarrage. Je ne sais pas pourquoi. Alors je n'ai
dnu restore
, suivie pardnu build
et puisdnx web
correctement démarré le serveur web. Je ne sais pas pourquoi sa passe, mais au moins je suis capable de le faire fonctionner. Il y a certainement un bug qui doit être adressée avant la version finale. Pour l'instant, c'est la solution de contournement. - J'ai modifié le fichier en question afin de refléter la solution.
- Vous pouvez spécifier
server.urls
paramètre dans le fichier de configuration d'application ou des paramètres de ligne de commande. La valeur peut avoir plusieurs valeurs séparées par des point-virgule voir ici. Le nom de fichier de configuration peut être hébergement.json, mais il peut être non seulement json: voir le problème.--config
peut être utilisé pour spécifier le nom de fichier de config - Je sais que cette question a déjà été répondu et marqué comme résolu, mais encore j'ai trouvé un super post par Rick Strahl sur son journal web appelé Accès au Réseau Externe à Kestrel et IIS Express dans ASP.NET Core donc je voulais la partager avec tous ceux qui rencontrent ce problème.
Vous devez vous connecter pour publier un commentaire.
Le fichier de configuration par défaut utilisé par Kestrel serveur est
hosting.json
. Le nom a été changé à plusieurs reprises dans les différentes versions bêta. Si vous utilisez maintenantproject.json
avec le suivant"command"
sectionpuis lors du démarrage du serveur à partir de la ligne de commande par
le fichier
hosting.json
sera lu. Le fichierallons configurer le serveur pour écouter 5000 à chaque adresse IP4. La configuration
informera à écouter 5000 sur les deux IP4 et IP6 adresse.
On peut spécifier d'autres fichiers de configuration par l'utilisation
ASPNET_ENV
variable d'environnement ou par l'utilisation de--config myconfig1.json
(ouconfig=myconfig1.json
). Par exemple, vous pouvez utiliseret de créer
hosting.Development.json
fichier de configuration spécifique. Alternativement, vous pouvez utiliserproject.json
avecet démarrer le serveur à l'utilisation
Je rappelle en outre qu'il pourrait être nécessaire que vous permettent en outre d'écouter et d'enregistrer (pour commencer
dnx web
). C'est nécessaire parce que le pare-feu et la sécurité locale d'écoute TCP/HTTP ports. Quelque chose comme ci-dessous doivent faire l'enregistrement et l'écoute de 5000 port pour tout le monde (IPv4 et IPv6):Pour être plus sûr, vous pouvez ajuster la configuration ci-dessus pour accorder des droits minimaux.
Mise à JOUR: Merci @BlaneBunderson. On peut utiliser des * à la place de l'adresse IP (comme
http://*:5000
) à écouter sur tout IP4 et IP6 adresses à partir de n'importe quelle interface. On devrait être attentivement et de ne pas utiliserhttp://*:5000;http://::5000
,http://::5000;http://*:5000
,http://*:5000;http://0.0.0.0:5000
ouhttp://*:5000;http://0.0.0.0:5000
car il aura besoin de s'inscrire IP6 adresse::
ou IP4 adresse0.0.0.0
deux fois.Correspond à l'annonce
Je pense que le comportement peut être modifié dans le futur. Donc je vous recommande d'utiliser uniquement
*:5000
,0.0.0.0:5000
et::5000
formulaire pour l'enregistrement de n'importe qu'ELLE adresse.Mise à JOUR 2: ASP.NET Core RC2 changements (voir l'annonce), le comportement de chargement des valeurs par défaut. Un avoir à faire des changements dans la
Main
pour charger les paramètres dehosting.json
et les paramètres de ligne de commande. Ci-dessous est un exemple de l'utilisationLe code ci-dessus utilise trois liaisons:
"http://*:1000"
,"https://*:1234"
,"http://0.0.0.0:5000"
par défaut au lieu de l'utilisation de la valeur par défaut le port 5000 par défaut (pour être précis, l'utilisation dehttp://localhost:5000
). L'appel de.UseConfiguration(config)
sont faites après.UseUrls
. Ainsi, la configuration chargée dehosting.json
ou la ligne de commande remplacer les options par défaut. Si on supprime.SetBasePath(Directory.GetCurrentDirectory())
ligne, l'hosting.json
sera chargé à partir du même répertoire où se trouve la dll de l'application sera compilé (par exemplebin\Debug\netcoreapp1.0
).On peut utiliser de l'exécution comme
pour remplacer les paramètres par défaut (à partir de
UseUrls
) et les paramètres de"server.urls"
propriété dehosting.json
si c'est exister.De la même façon on pourrait remplacer l'ULR paramètres en définissant la variable d'environnement
puis le démarrage par défaut de l'application à l'aide
dotnet.exe run
utiliserahttp://localhost:12541/
pour la liaison.Vous pouvez trouver ici un exemple de l'utilisation de la liaison HTTPS.
http://*:5000
est le même quehttp://::5000;http://0.0.0.0:5000
et pashttp://0.0.0.0:5000
. Il la force à l'écoute à la fois IPv4 et IPv6. Vous pouvez le vérifier en utilisationhttp://*:5000;http://::5000
ouhttp://::5000;http://*:5000
. - En un et obtenez le message d'erreur "Microsoft.AspNet.Serveur.Kestrel.La mise en réseau.UvException: Erreur -4091 EADDRINUSE adresse est déjà en cours d'utilisation" lors de l'enregistrement de la deuxième adresse. Dans certains scénarios, l'enregistrement à la fois IPv4 et IPv6 est bon, dans un autre cas, il n'est pas bon. De toute façon qu'il est bon de parler de la sorte..UseStartup<Startup>()
remplacer.UseConfiguration(config)
dans votre "update 2" par exemple?Dans la RC2, la section commandes du projet.json est plus utilisé. Je n'ai pas réussi à Kestrel pour ramasser de l'hébergement.json, mais vous pouvez par programmation à l'ensemble du port, dans la Principale de l'application où la nouvelle WebHostBuilder est créé et configuré. Il suffit d'ajouter .UseUrls() la méthode comme dans l'exemple ci-dessous
.UseUrls("http://*:5000")
au lieu de cela, et le port transmis 5000 vides IP de l'Hôte sur VirtualBox, et enfin je peux aller à la menu fixe-hébergé .NET de Base des points de terminaison à partir de mon Mac. Sweet!Si vous essayez de mettre un ASP.NET application de Base à l'intérieur d'un conteneur docker (ce qui était mon cas d'utilisation pour avoir à écouter non localhost adresses), note que ce cas d'utilisation a déjà été mis en place pour vous par Microsoft. Vous pouvez voir toute la gloire à https://hub.docker.com/r/microsoft/aspnetcore/
Au courant (v1.0.1) la clé de la magie pour la résolution de ce problème est que le Dockerfile contient une url en paramètre variable d'environnement, et que l'application ne tentez pas de le modifier. (En effet, un conteneur d'application en interne affirmer aussi peu que possible sur l'environnement où il sera exécuté.)
Remarque le signe plus plutôt que astérisque là. En fait je vous recommandons de visiter la ci-dessus dockerhub lien sur la lecture de ma réponse, aussi longtemps que le lien est bon. La Version 1.1 est juste autour du coin, et les choses peuvent encore changer à l'avenir.
Lors de l'exécution du récipient, assurez-vous d'exposer invité le port 80, par le paramètre variable d'environnement. Par exemple:
Si vous utilisez asp.net de base 2.1+,modifier config section appsettings.json.
},