gpt4 book ai didi

iis - 在 IIS 上运行 ASP.NET 5 Web.API

转载 作者:行者123 更新时间:2023-12-01 12:30:41 25 4
gpt4 key购买 nike

我在 ASP.NET 5 中创建了一个应用程序。目前我只是想公开一个非常简单的 Web.API 方法来尝试让它工作。 Controller 看起来像这样:

using System.Threading.Tasks;
using Microsoft.AspNet.Mvc;

namespace Api
{
[Route("api/[controller]")]
public class ValuesController : Controller
{
[HttpGet("{id}")]
public async Task<Value> Get(int id)
{
return await Task.Factory.StartNew(() => new Value { Id = id });
}
}
}

我尝试遵循 asp.net 文档中提供的两个教程 herehere .

我已将我的网站发布到我机器上的某个位置,并设置了 IIS 以指向它。我启用了 IIS 日志记录。当我尝试从 IIS 浏览并转到 url http://localhost/TestApi/api/Values/1 时,我在浏览器中收到 404 响应。这对我来说也很有趣,因为在 ResponseHeaders 中我有一个看起来像这样的:Server: Kestrel。 这不应该是 IIS 吗?

我的日志目录中也有一个日志文件,它看起来像这样:

Hosting environment: Production
Now listening on:http://localhost:20488
Application started. Press Ctrl+C to shut down.

当我转到 http://localhost:20488/api/Values/1 时不过,我得到了返回的 JSON 对象。 { 编号:1 }

我不知道我做错了什么。我进行了很多搜索,试图找出使它与 IIS 一起工作的正确配置,但仍然没有找到答案。

知道我做错了什么或如何让它按预期工作吗?

我也查看了这些博客文章,它们似乎是很好的资源,但没有关于我遇到的问题的任何信息:strathweb , blogs.msdn

更新:我在带有 IIS 10 的 Windows 10 上尝试过此操作,但遇到了同样的问题,因此我从问题的标题中删除了 IIS 7.5,因为它似乎不是特定于 IIS 7.5 的。

最佳答案

经过多次搜索,我终于找到了解决问题的方法。我之前没有发布我的 Startup.cs 文件,因为我认为它与问题无关,因为应用程序似乎在 IIS 之外正常工作。我仍然相信这是真的,但新的 ASP.NET 5 apps working in IIS 似乎存在一个已知问题. (注意:虽然该问题已关闭,但它引用了其他未关闭的问题。其中一个链接问题中的评论之一似乎说这将通过 RC2 修复。)在我的 Configure 方法在 Startup.cs 中看起来像这样之前

public void Configure(IApplicationBuilder app)
{
app.UseIISPlatformHandler();
app.UseMvc();
}

我需要将该方法更改为如下所示:

public void Configure(IApplicationBuilder app)
{
app.UseIISPlatformHandler();
app.Map("/TestApi", builder => builder.UseMvc());
}

显然,IIS 只是将它直接获取的 URL 传递给应用程序,因为 URL 以 http://localhost/TestApi/api/Values/1 的形式传入。 ,应用程序不知道如何处理其中包含“TestApi”的路由。一旦我改变了它并再次发布它。当通过 IIS 转到该 URL 时,应用程序按预期响应。

为了让我在开发过程中更轻松,以便我可以通过 VS 和 IIS 运行应用程序而无需更改 Configure 方法的第二行,有两个选项。一种方法是将 Map 调用包装在 if 语句中,仅在生产环境中调用 Map 函数,否则调用 app.UseMvc()。我选择做的是更改我的 launchSettings.json 我将其更新为如下所示:

{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:49482/TestApi",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"Hosting:Environment": "Development"
}
},
"web": {
"commandName": "web",
"environmentVariables": {
"Hosting:Environment": "Development"
}
}
}
}

关于iis - 在 IIS 上运行 ASP.NET 5 Web.API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34422003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com