编辑:从.Net6更改为.Net8时出现的问题已减少.从.net6更改为.net7可以很好地工作.但是为什么呢?

我试着按照这个教程来做. https://learn.microsoft.com/en-us/visualstudio/containers/tutorial-multicontainer?view=vs-2022

他们已经将他们的代码推送到 https://github.com/MicrosoftDocs/vs-tutorial-samples/tree/master/docker/ComposeSample

我下载了它,它起作用了. 我将项目的.Net版本和构建/运行项目的Linux版本从.Net6更改为.Net8,但调用WebApi时连接被拒绝.

它闻起来像是更严格的违约,但我发现很难确定和修复它.

所以:你能下载上面的样例并让它运行到最新的.Net,目前是.Net8吗?当然,我想知道为什么这是/曾经是个问题.

问题的前半部分:

我已经让WebFrontEnd运行并try 调用WebApi.在调用WebApi时,前端会收到Connection Refused.

当我将浏览器指向http://localhost:53845/Counter时,WebApi运行正常.我怀疑问题是WebApi在与WebFrontEnd预期不同的端口上可用.据我所知,WebFrontEnd希望在端口80上找到WebApi?

当通信发生在Docker环境中时,我如何调试通信?

呼叫码:

using (var client = new System.Net.Http.HttpClient())
{
    // Call *mywebapi*, and display its response in the page
    var request = new System.Net.Http.HttpRequestMessage();
    // webapi is the container name
    request.RequestUri = new Uri("http://webapi/Counter");
    var response = await client.SendAsync(request);
    string counter = await response.Content.ReadAsStringAsync();
    ViewData["Message"] = $"Counter value from cache :{counter}";
}

推荐答案

如果您使用的是版本8 ASP.NET容器,则默认端口已从80更改为8080.

如果是这样的话,你应该用http://webapi:8080/Counter代替.

here. biggest biggest

Csharp相关问答推荐

在. NET Core 8 Web API中,当为服务总线使用通用消费者时,如何防止IServiceProvider被释放或空?"

. NET WireMock拒绝PostAsJsonAsync序列化

NumPy s fftn in C#with pythonnet'

创建临时Collection 最有效的方法是什么?堆栈分配和集合表达式之间的区别?

自动映射程序在GroupBy之后使用项目

查找表中的模式

为什么EventInfo.EventHandlerType返回可为空的Type值?

SortedSet.Remove()不会删除SortedSet.Min返回的元素

使用预定义对象减少Task.Run/Factory.StartNew中的关闭开销

当前代码Cosmos DB 3.37.1:PartitionKey key key mismatch exception

是否由DI容器自动处理由ActivatorUilties.CreateInstance()创建的服务?

链接到字典字符串.拆分为(.Key,.Value)

如何使用ODP.NET C#设置Oracle会话时间长度限制

Foreach非常慢的C#

如何在C#控制台应用程序中获取用户输入并将其作为订单项目进行处理?

如何消除Visual Studio错误,因为它不识别集合表达式的新C#12语法?

.NET文档对继承的困惑

嵌套Blazor组件内的验证

使用ITfoxtec.Identity.Saml2解析相同键多值SAML 2声明

XmlSerializer在遇到XML属性(命名空间)时崩溃