当使用WebHostBuilder在一个Main入口点,我怎么可以指定它绑定到端口?
默认情况下,它使用5000.
请注意,此问题特定于新的ASP.NET Core API(当前位于1.0.0-RC2中).
Docker noob在这里......
如何正确运行由Visual Studio 2017在命令行生成的Asp.Net CORE应用程序的docker镜像?
docker run -it -d -p 80:32769 myappimage
Run Code Online (Sandbox Code Playgroud)
似乎没有正常工作(图像运行,但我无法浏览到我的应用程序)
注意:我只是使用默认模板在Studio中创建了一个示例ASP.Net Core Web App,并添加了Docker支持(通过单击"添加Docker支持"复选框).当您执行此操作时,Studio会添加dockerfile和一些docker-compose文件.
当Visual Studio"运行"图像时(通过按F5) - 我可以成功浏览到我的应用程序(通过" http:// localhost:32789 "或类似的主机端口.容器内的应用程序位于端口80上).但我无法弄清楚在命令行自己运行它的命令.
Studio添加到项目中的标准Dockerfile是......
FROM microsoft/aspnetcore:1.1
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "WebApplication2.dll"]
Run Code Online (Sandbox Code Playgroud) 我试图找出修改kestrel 从Startup类构造函数侦听的URL的正确方法.
更新:除了下面的答案,我已经明白Startup类不是以我想象的方式配置Kestrel.我原以为Startup会创建一个单独的应用程序范围的配置对象,它可以通过约定来定位,但事实并非如此.正如@Tseng所指出的,应用程序和托管的配置是另外一个问题.链接的答案和接受的答案提供了工作示例.
我在Vagrant中创建了一个全新的Ubuntu 14盒子,并根据Microsoft当前的说明安装了ASP.NET Core 1.1:https://www.microsoft.com/net/core#linuxubuntu
我跑了:
默认情况下,它侦听http:// localhost:5000.在Program.cs中,我可以调用app.UseUrls("http://*:5001),这可以改变URL和端口.
我真正想要的是通过在Startup类中添加一个新的JSON设置文件来按照惯例更改URL,所以我按照示例创建了一个hosting.JSON文件(注意:我已经尝试过"server.urls"和"网址"作为关键).
{
urls: "http://*:5001"
}
Run Code Online (Sandbox Code Playgroud)
在Startup.cs下面添加appsettings.json文件的默认行我添加了.AddJsonFile("hosting.json",可选:false); (可选:false以确保它正在拾取文件)
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddJsonFile("hosting.json", optional: false);
if (env.IsDevelopment())
{
// For more details on using the user secret store see https://go.microsoft.com/fwlink/?LinkID=532709
builder.AddUserSecrets();
}
builder.AddEnvironmentVariables();
Configuration = builder.Build();
}
Run Code Online (Sandbox Code Playgroud)
我已经验证配置构建后设置是否存在,但是当在Program.cs中构建主机时,它没有被选中或使用
public class Program
{
public static void …Run Code Online (Sandbox Code Playgroud) 我按照本教程编写了我的第一个ASP.NET Core 2.0 Web REST API应用程序.但是我的具体问题是关于在VS2017中创建标准ASP.NET核心Web应用程序时在Program.cs文件中获得的代码,它与此处描述的代码相同:
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
namespace WebApplication5
{
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
}
Run Code Online (Sandbox Code Playgroud)
我有我的应用程序工作正常,当我在VS2017调试,所以接下来我做的步骤是按使它成为一个独立的应用程序本教程,它工作正常,并给了我一个可执行文件,我可以运行(我是在Windows 10 64) .
现在的问题是这个可执行文件在端口5000上启动了web服务器,但是我希望能够通过命令行参数配置监听URL.
通过上面的代码来看,我们可以看到,args传递给WebHost.CreateDefaultBuilder(args),所以我假设的任何命令行参数通过此功能解释,但我想不出我有什么在命令行上传递,以获取服务器听另一个港口.
我尝试了以下选项:
- MyApp.exe --UseUrls="http://*:5001"
- MyApp.exe --UseUrls=http://*:5001
- MyApp.exe --server.urls=http://*:5001
-MyApp.exe urls="http://*:5001"
以及其他各种组合......应用程序启动但只能在端口5000上进行监听.
我开始认为我正在尝试一些不可能的事情:)所以它真的不可能或者我错过了什么吗?
我正在使用IIS Express托管我的网站和API,它们都是ASP.NET Core应用程序。当我使用Fiddler查看HTTP网络日志时,我总是会忘记哪个端口属于哪个应用程序。为了解决这个问题,我想将我的应用程序当前使用的端口号更改为更难忘的数字。
例如,我希望我的UI网站使用端口50000,而我的内部API使用50001。
直觉告诉我将“ sslPort”和“ launchUrl”分别更改为50000和50001,但这不起作用。
例如,这是我当前的launchSettings.jsonASP.NET文件
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iis": {
"applicationUrl": "http://localhost",
"sslPort": 0
},
"iisExpress": {
"applicationUrl": "http://localhost:29751",
"sslPort": 44371
}
},
"profiles": {
"Development": {
"commandName": "IISExpress",
"launchUrl": "https://localhost:44371/"
}
}
}
Run Code Online (Sandbox Code Playgroud)
将其更改为此无效
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iis": {
"applicationUrl": "http://localhost",
"sslPort": 0
},
"iisExpress": {
"applicationUrl": "http://localhost:29751",
"sslPort": 50000
}
},
"profiles": {
"Development": {
"commandName": "IISExpress",
"launchUrl": "https://localhost:50000/"
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题:为什么此更改不起作用?如何更改端口号?
非常感谢...