San*_*kar 3 c# iis rest asp.net-core asp.net-core-routing
我正在开发ASP.NET Core Web API。在这种情况下,我不得不使用多个get从SQL Server DB获取数据的功能。因此,我正在做自定义属性路由。以下是我的代码
[Route("api/[controller]")]
public class MeController : Controller
{
private readonly ITechRepository _tech;
private readonly IPageOptions _page;
public MeController(ITechRepository tech,IPageOptions page)
{
_tech = tech;
_page = page;
}
[Route("getTech")]
public IEnumerable<TechStack> Get()
{
return _tech.getAll();
}
[Route("getOptions")]
public IEnumerable<PageControl> getOptions()
{
return _page.getOptions();
}
//GET api/values/5
[HttpGet("{id}")]
public int Get(int id)
{
return id;
}
}
Run Code Online (Sandbox Code Playgroud)
以上路由在VS IIS Express中运行良好,这就是该URL
http://localhost:51889/api/me/gettech
Run Code Online (Sandbox Code Playgroud)
但是,当我在IIS 10中发布此API时getTech,getOptions由于无法正常工作,因此会产生404错误,并且[HttpGet("{id}")]在这两者中均起作用。
有人可以帮忙吗...
终于我解决了这个问题。
问题出在SQL Server登录中。我在自己的名为aspNetCore的应用程序池中的IIS 10中配置了应用程序。其配置是
.Net CLR版本:无托管代码
托管管道模式:集成
身份:ApplicationPoolIdentity
身份引起问题。
当我将此URL称为http:// localhost:51889 / api / me / gettech时,IIS尝试使用IIS Apppool / aspNetCore的登录ID登录到SQL Server 。然后最终出现以下错误
用户“ IIS APPPOOL \ AspNetCore”的登录失败。原因:找不到与提供的名称匹配的登录名。[客户:]
我在事件日志中捕获了上述事件,其事件ID为:18456
为此,我必须为此身份创建本地用户和组。不幸的是,由于我正在使用Windows 10家庭版,因此无法执行此操作。这不允许我这样做。
我所做的是为我的应用程序池(aspNetCore)创建自定义身份。
在这里,我提供了用户名,帐户密码(已在我的用户组和SQL Server中找到)。我将dbowner这个帐户的权限授予了我的数据库。
但是我仍然不知道为什么它返回404错误。
无论如何,此问题现已解决。
快乐编码:)
| 归档时间: |
|
| 查看次数: |
2480 次 |
| 最近记录: |