J'écris simple application Asp.Net Core WebAPI 2.0, cela fonctionne sur mon ordinateur local. Mais je veux le déployer sur le serveur. Alors je le fais.
Mon système:
Ubuntu 16.04.
Asp.Net WebAPI 2.0 (and dotnet version 2.1.105)
Mais, lorsque l'application démarre, il écrit:
Now listening on:http://localhost:53115
Quand j'essaie d'obtenir des valeurs:
http://id_address:53115/api/values
Et je ne peux pas obtenir de réponse. Dans le facteur:
Could not get any response
There was an error connecting to
http://id_address:53115/api/values.
Why this might have happened:
The server couldn't send a response:
Ensure that the backend is working properly
Self-signed SSL certificates are being blocked:
Fix this by turning off 'SSL certificate verification' in Settings > General
Proxy configured incorrectly
Ensure that proxy is configured correctly in Settings > Proxy
Request timeout:
Change request timeout in Settings > General
Ce que je devrais faire? Pouvez-vous me dire comment résoudre ce problème?
Je ne sais pas par où commencer.
Je vous remercie!
J'utilise .NETCore 2.1 prev, donc je n'ai pas été en mesure de le tester moi-même, mais si je crois que https://www.billbogaiv.com/posts/setting-aspnet-Host-address-in-net -core-2 , l'ajout de .UseUrls(urls: "http://*:5000")
pourrait éventuellement indiquer à Kestrel d'écouter le port 5000 et pas seulement sur localhost. Il devrait donc également fonctionner sur un serveur distant.
Autre solution possible, UseKestrel(..)
https://docs.Microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1&tabs=aspnetcore2x en utilisant IPAddress.Any
au lieu de Loopback
.
Ceci est configuré par URL du serveur Configuration de l'hôte
Indique les adresses IP ou adresses hôte avec les ports et les protocoles sur lesquels le serveur doit écouter les demandes.
Key : urls
Type : chaîne
Par défaut : http: // localhost: 5000
Défini à l'aide de : UseUrls
Variable d'environnement: ASPNETCORE_URLSDéfinissez une liste de préfixes d'URL (;) séparés par des points-virgules (;) auxquels le serveur doit répondre.
Il est également possible de définir une URL à l'aide d'arguments de ligne de commande. Par exemple:
dotnet run --urls = http://0.0.0.0:5:5001
mais cela ne fonctionne pas immédiatement avec les anciennes versions d'ASP.NET Core ( dépend de si ce correctif s'applique à la version utilisée ou non ).
Solution de contournement pour les anciennes versions basée sur le fait que vous pouvez toujours définir les paramètres de l'hôte directement via la méthode .UseConfiguration
:
var config = new ConfigurationBuilder().AddCommandLine(args).Build();
return WebHost.CreateDefaultBuilder(args)
.UseConfiguration(config)
Notez que la même idée peut être utilisée pour lire la valeur du paramètre depuis n’importe quelle autre source de configuration, telle que fichier de configuration par exemple.