我已经将我的c#,asp.net 5,mvc 6应用程序部署到了Windows 2008服务器上.我已经启动dnx web它正在侦听端口5000并且从本地计算机访问时工作正常.
如何让它听取非本地主机请求?
PS这个问题并不重复......当hosting.ini实际上有.ini格式时,它指的是asp.net pre RC1.现在,它是JSON,我找不到任何实际应该包含在其中的文档.
PPS真正的解决方案是对链接问题的未接受答案,并提出了一个重要的警告.脚步:
dnx web- 它会失败dnu restore我们知道在Visual Studio中为Web应用程序分配了一个随机端口号.它在我的办公桌面上工作正常.但是,当我将代码拉到我的笔记本电脑(来自VisualStudio.com)并运行Web应用程序时.我收到一条消息,说,
端口10360已被另一个应用程序使用.
我可以Recommendation #1通过将端口更改为其他类似13333 来修复它.但我很好奇端口10360发生了什么.如何检查使用端口10360的应用程序?我该如何停止该申请?
我在下面添加了以下部分project.json.
"commands": {
"run": "run server.urls=http://localhost:8082",
"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.Kestrel --server.urls http://localhost:8082",
"weblistener": "Microsoft.AspNet.Hosting --server WebListener --server.urls http://localhost:8082"
},
Run Code Online (Sandbox Code Playgroud)
但是,它仍然显示"正在侦听:http:// localhost:5000 "运行时使用dotnet myapp.dll?
顺便说一下,来自其他机器的客户能否访问该服务?
我正在使用ASP.NET Core空(web)模板编写一个简单的ASP.NET Core服务。
默认情况下,它绑定到端口5000,但我希望它绑定到系统上的随机可用端口。
我可以通过修改BuildWebHost为:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseUrls("http://*:0") // This enables binding to random port
.Build();
Run Code Online (Sandbox Code Playgroud)
它绑定到随机端口,但是如何从应用程序中确定我正在侦听哪个端口?
我正在使用 docker-compose 托管使用 .Net Core 模板创建的 .Net Core Web 应用程序。
我的 docker-compose 如下:
version: '3.4'
services:
db:
image: mysql:5.7
container_name: mysql_db
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: "root"
MYSQL_HOST: "localhost"
MYSQL_ROOT_HOST: "%"
todoservice:
image: ${DOCKER_REGISTRY}todoservice
ports:
- "8000:80"
build:
context: .
dockerfile: ToDoService/Dockerfile
depends_on:
- db
volumes:
db_data:
Run Code Online (Sandbox Code Playgroud)
其中我声明我的主机端口 8000 将映射到此 docker 容器上的端口 80。我还有这个 dockerfile 定义了如何构建我的 .Net Core Web Api。
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY ToDoService/ToDoService.csproj ToDoService/
RUN dotnet restore ToDoService/ToDoService.csproj …Run Code Online (Sandbox Code Playgroud) 我编辑了launchSettings.JSON文件并更改了端口.
"Gdb.Blopp": {
"commandName": "Project",
"launchBrowser": false,
"launchUrl": "http://localhost:4000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
Run Code Online (Sandbox Code Playgroud)
不过,它仍然从5000端口开始.那个设置是否被忽视了,还是我错过了别的什么?
我想连接到我的Kestrel服务器,其中托管的ASP.NET 5应用程序来自同一网络中的另一台PC.可能吗?我可以从cmd ping我的电脑,但当我尝试从网络浏览器连接时,我得到'连接超时'(我输入:"http:// {my_kestrel_ip}:5000 /").
所有在端口 8888 上公开 .NET 6 Web API 的尝试都会失败。
我通过在 appsettings.json 中添加 url 并在 Program.cs 中配置端口,在线尝试了这些答案和各种其他文章,但没有成功。
更新: Web API 在默认端口上启动,而不是在我想要公开它的端口上启动。在 Program.cs 中配置端口时,我收到
System.InvalidOperationException:“不支持更改 URL,因为地址为只读。”
app.Run("http://localhost:8888"); // This code results in Exception above
Run Code Online (Sandbox Code Playgroud)
或者
System.NotSupportedException:“集合具有固定大小。”
app.Urls.Add("http://localhost:8888"); // The Exception above occurs after running this line of code
Run Code Online (Sandbox Code Playgroud)
运行下面的代码不会更改端口,并且 API 在默认端口上启动
builder.WebHost.ConfigureKestrel(options => options.ListenLocalhost(8888));
Run Code Online (Sandbox Code Playgroud) asp.net-core ×4
c# ×4
.net ×1
.net-core ×1
api ×1
asp.net ×1
asp.net-mvc ×1
dnx ×1
docker ×1
iis-express ×1
json ×1