ASP.NET Core设置URLs的几种方法,完美解决.NET 6项目局域网IP地址远程无法访问的问题

方法,URLs,项目,完美 · 浏览次数 : 193

小编点评

**方法一:使用环境变量** 1. 在运行 .NET 6 项目之前设置环境变量 `ASPNETCORE_URLS`,格式为 `http://localhost:port`,其中 `port` 是项目中的端口号。 2. 示例:`ASPNETCORE_URLS=http://localhost:7000;https://localhost:7010` **方法二:使用命令行参数** 1. 在运行 .NET 6 项目之前使用 `dotnet --urls` 命令设置多个 URL。 2. 示例:`dotnet --urls "https://192.168.11.82:9001;http://192.168.11.82:9000"` **方法三:使用配置文件** 1. 在运行 .NET 6 项目之前创建一个 `appsettings.json` 文件,并添加以下配置项:`urls\":\"htts://192.168.11.82:9001;http://192.168.11.82:9000\"`。 2. 示例:`{ "urls": "htts://192.168.11.82:9001;http://192.168.11.82:9000" }` **方法四:使用 UseUrls 方法** 1. 在 `Program.cs` 中使用 `UseUrls` 方法设置多个 URL。 2. 示例:`app.Urls.Add("https://0.0.0.0:9001", "http://0.0.0.0:9000");` **方法五:使用 Kestrel** 1. 在 `Program.cs` 中使用 `app.UseKestrel` 方法启动 Kestrel 服务,并指定多个 URL。 2. 示例:`app.UseKestrel(builder => { builder.UseUrls("https://0.0.0.0:9001", "http://0.0.0.0:9000"); });`

正文

近期在dotnet项目中遇到这样的问题:.net6 运行以后无法通过局域网IP地址远程访问。后查阅官方文档。整理出解决问题的五种方式方法,通过新建一个新的WebApi项目演示如下:

说明

操作系统:Ubuntu 22.04.2
在这里插入图片描述

运行时:.NET 6
在这里插入图片描述

开发工具:Visual Studio 2202

新建webapi

在这里插入图片描述

# 只需要以下名利即可创建新的webapi项目
dotnet new webapi -n test

直接运行项目:dotnet run
在这里插入图片描述
此时通过远程IP + Post的方式无法正常访问
在这里插入图片描述
但是通过:curl https://localhost:7150/swagger/Index.html -k 就可以访问(-k 是避开ssl证书,后期专门出一篇文章讲一下)

在这里插入图片描述部分截图,但是可以看得出页面已经正常请求了。

接下来正式讲解方法

方法一:使用环境变量(该方法可以设置url,但是不能解决远程访问的问题,不推荐)

在这里插入图片描述

# 环境变量仅在当前终端生效,关闭终端后需要重新设置
export ASPNETCORE_URLS="http://localhost:9000;https://localhost:9001"
# 运行程序
dotnet test.dll

如果使用Windows命令行(即cmd命令行),使用下面的方式设置

# 环境变量仅在当前命令行窗口生效
set ASPNETCORE_URLS=http://localhost:7000;https://localhost:7010
# 将ASPNETCORE_URLS变量保存到用户环境变量中
setx ASPNETCORE_URLS "http://localhost:7000;https://localhost:7010"
# 加/m参数,将ASPNETCORE_URLS变量保存到系统环境变量中
setx ASPNETCORE_URLS "http://localhost:7000;https://localhost:7010" /m
# 运行程序
dotnet test.dll

注意:使用setx设置环境变量后,需要打开新的Windows命令行窗口才会使用环境变量生效

方法二:使用命令行参数(可以设置url,也可以解决远程访问的问题,但是启动的时候需要将url作为参数启动,比较麻烦,不推荐)

在生成程序的根目录下,使用dotnet --urls命令,并带上urls参数

dotnet run --urls "https://192.168.11.82:9001;http://192.168.11.82:9000"

在这里插入图片描述
此时远程可以访问:
在这里插入图片描述为部分截图

方法三:使用配置文件(即设置了url,也解决了远程访问的问题。推荐)

在生成程序的根目录下,打开appsettings.json文件,添加url配置项

"urls":"htts://192.168.11.82:9001;http://192.168.11.82:9000"

在这里插入图片描述
在这里插入图片描述

方法四:使用UseUrls(一次设置,两个问题都解决,推荐)

这种方法需要修改源代码,打开Program.cs文件,添加如下代码。

app.Urls.Add("https://0.0.0.0:9001");
app.Urls.Add("http://0.0.0.0:9000");

在这里插入图片描述
此时运行
在这里插入图片描述

方法五:使用Kestrel(感兴趣的小伙伴可以自己去研究一下)

今天的内容就到这里,不足之处请大家指正。

与ASP.NET Core设置URLs的几种方法,完美解决.NET 6项目局域网IP地址远程无法访问的问题相似的内容:

ASP.NET Core设置URLs的几种方法,完美解决.NET 6项目局域网IP地址远程无法访问的问题

近期在dotnet项目中遇到这样的问题:.net6 运行以后无法通过局域网IP地址远程访问。后查阅官方文档。整理出解决问题的五种方式方法,通过新建一个新的WebApi项目演示如下: 说明 操作系统:Ubuntu 22.04.2 运行时:.NET 6 开发工具:Visual Studio 2202 新

【ASP.NET Core】用配置文件来设置授权角色

在开始之前,老周先祝各个次元的伙伴们新春快乐、生活愉快、万事如意。 在上一篇水文中,老周介绍了角色授权的一些内容。本篇咱们来聊一个比较实际的问题——把用于授权的角色名称放到外部配置,不要硬编码,以方便后期修改。 由于要配置的东西比较简单,咱们并不需要存在数据库,而是用 JSON 文件配置就可以了。将

Asp.net MVC 跨域设置

.Net Core 跨域

【ASP.NET Core】MVC控制器的各种自定义:应用程序约定的接口与模型

从本篇起,老周会连发N篇水文,总结一下在 MVC 项目中控制器的各种自定义配置。 本文内容相对轻松,重点讨论一下 MVC 项目中的各种约定接口。毕竟你要对控制器做各种自定义时,多数情况会涉及到约定接口。约定接口的结构都差不多,均包含一个 Apply 方法,实现类需要通过这个方法修改关联的模型设置。

【ASP.NET Core】标记帮助器——替换元素名称

标记帮助器不仅可以给目标元素(标记)插入(或修改)属性,插入自定义的HTML内容,在某些需求中还可以替换原来标记的名称。 比如我们在使用 Blazor 时很熟悉的 Component 标记帮助器。在 Razor 文档中你将使用 元素来设置要呈现的组件。而在实际处理时,会去掉

基于.NetCore开发博客项目 StarBlog - (22) 开发博客文章相关接口

## 前言 本文介绍博客文章相关接口的开发,作为接口开发介绍的第一篇,会写得比较详细,以抛砖引玉,后面的其他接口就粗略带过了,着重于WebApi开发的周边设施。 涉及到的接口:文章CRUD、置顶文章、推荐文章等。 开始前先介绍下AspNetCore框架的基础概念,MVC模式(前后端不分离)、WebA

推荐十个优秀的ASP.NET Core第三方中间件,你用过几个?

ASP.NET Core 作为一个强大的、跨平台的、高性能的开源框架,为开发者提供了丰富的功能和灵活的扩展性。其中,中间件(Middleware)是 ASP.NET Core 架构中的核心组件之一,它负责处理 HTTP 请求和响应的管道,允许开发者在请求和响应之间插入自定义逻辑。随着 ASP.NET

Asp-Net-Core开发笔记:使用原生的接口限流功能

前言 之前介绍过使用 AspNetCoreRateLimit 组件来实现接口限流 从 .Net7 开始,AspNetCore 开始内置限流组件,当时我们的项目还在 .Net6 所以只能用第三方的 现在都升级到 .Net8 了,当然是得来试试这个原生组件 体验后:配置使用都比较简单,不过功能也没有 A

ASP.NET Core如何禁用模型验证(或者从模型状态中移除某些属性)?

这是一篇4年前的文章:【经验分享】在ASP.NET Core中,如果禁用某个请求的模型验证? 事隔多年,又有网友问到这个问题。我就来重新整理一下,顺便扩展一下之前的解决办法。 这是一个来自网友【David】的提问。在 AppBoxCore 项目的新增用户页面,新增一个上传按钮:

Asp-Net-Core开发笔记:进一步实现非侵入性审计日志功能

前言 上次说了利用 AOP 思想实现了审计日志功能,不过有同学反馈还是无法实现完全无侵入,于是我又重构了一版新的。 回顾一下:Asp-Net-Core开发笔记:实现动态审计日志功能 现在已经可以实现对业务代码完全无侵入的审计日志了,在需要审计的接口上加上 [AuditLog] 特性,就可以记录这个接