如何在 IIS 中设置 ASP.NET 后端?

How can I setup my ASP.NET backend in IIS?

我正在构建一个通过 Microsoft IIS 管理的网站。我希望我的整个网站像这样工作:

  1. IIS 通过端口 80 获取主网站的 HTTP 请求,然后使用 HTML 和 JS 文件进行响应。这些文档保持静态,只是作为文件保存在服务器上,IIS 读取这些文件并将其发送给客户端,而无需进一步修改。
  2. 在客户端获取的 JS 文档中,有 fetch() 命令,当用户与网站交互时,这些命令会在运行时通过不同的端口发送额外的请求。浏览器应该从服务器取回 JSON 数据。我已经编写了一个 ASP.NET 网络应用程序来执行此操作。

这是我当前在 IIS 中的设置:

enter image description here

我已经为第一步(前端)设置了一个站点,为第二步(后端)设置了一个站点。我为第一个站点添加了一个到端口 80 的绑定并设置了默认文档。我将第二个站点链接到 ASP.NET 应用程序的构建二进制文件所在的目录。然后,我将端口 5000 和相同 IP 地址的绑定添加到第二个站点。

第一步有效。通过端口 80 发送请求时,我得到了网站文件。但是第二步没有。在 Visual Studio 的调试模式下,它工作正常并且可以正常工作。但是我还没有设法让第二步在 IIS 中工作。我在发送请求时得到的响应是 404。我在后端创建了一个额外的控制器用于测试,它应该只响应一些硬编码的字符串,什么都不做。实际上这行得通。我确实得到了 200 和字符串作为响应。因此,与我的数据库通信的 ASP.NET 后端一定有问题。

我发现每次发送请求时,我的后端都会写入错误日志。它说: 失败:Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware1 执行请求时出现未处理的异常。

System.Text.Json.JsonException: 检测到不支持的可能对象循环。这可能是由于循环或对象深度大于最大允许深度 32。

在System.Text.Json.ThrowHelper.ThrowInvalidOperationException_SerializerCycleDetected(Int32 最大深度)

在System.Text.Json.JsonSerializer.Write(Utf8JsonWriter writer,Int32 originalWriterDepth,Int32 flushThreshold,JsonSerializerOptions 选项,WriteStack& state)

在 System.Text.Json.JsonSerializer.WriteAsyncCore(流 utf8Json,对象值,类型 inputType,JsonSerializerOptions 选项,CancellationToken cancellationToken)

在Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter.WriteResponseBodyAsync(OutputFormatterWriteContext 上下文,编码选择编码)

在Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter.WriteResponseBodyAsync(OutputFormatterWriteContext 上下文,编码选择编码)

at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|27_0(ResourceInvoker 调用程序、Task lastTask、State next、Scope 作用域、对象状态、Boolean isCompleted)

at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|19_0(ResourceInvoker 调用程序、Task lastTask、State next、Scope 范围、对象状态、Boolean isCompleted)

at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker 调用程序、Task 任务、IDisposable 范围)

at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint 端点,任务请求任务,ILogger 记录器)

at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.g__Awaited|6_0(ExceptionHandlerMiddleware 中间件、HttpContext 上下文、Task 任务)

同样,我在调试后端ap时没有得到错误

有人可以帮忙吗?

问题基本上是错误的SQL服务器权限设置。我设法解决了我的问题。这可能对面临类似问题的人有帮助: