gpt4 book ai didi

c# - .NET Core 2.0 MVC odd 404 on controller methods only when deployed to IIS

转载 作者:太空宇宙 更新时间:2023-11-03 14:54:33 25 4
gpt4 key购买 nike

我的家庭 Controller 成功地从

返回 index.html

http://localhost/

http://localhost/controller/

但如果我试着打

http://localhost/controller/method/

我得到了 404,即使该方法在 IIS express 中工作正常。

无法在网上找到任何有类似问题的人,只有 Controller 上的方法在某个特定部署上不起作用,但 Controller 本身没问题。

我尝试过的在 IIS 部署的许多 .Net Core 2.0 问题中很常见的事情:

  • 确保 Windows 身份验证在项目设置和 IIS 中处于打开状态(我已经打开和关闭它都无济于事我在我的网络应用程序上没有用户身份验证所以我不认为这个对我来说很重要)。

  • 将我的应用程序池切换为对 CLR 版本使用无托管代码

  • 将应用程序池 ID 更改为 LocalSystem

  • 更改我的发布输出文件夹的权限以包含 %hostname%\IIS_IUSRS

可以肯定的是,我还尝试了很多其他的基本故障排除方法,有时可以解决问题。 IE。删除和阅读应用程序。再次打开和关闭东西无济于事。

我们非常欢迎任何有关如何解决此问题的建议。

我还想指出它在昨天工作并且不记得除了发布输出之外更改任何内容以使用 Debug 而不是 Release 当然现在我已经改回 Release 但还是不行。

代码如下

public class MyController : Controller
{
public IActionResult Index()
{
return View();
}

[HttpPost]
public void Store([FromBody]MyObject obj)
{
Console.WriteLine(Request.Body);
//Some code
}

[HttpGet]
public void Check(string objectUID, string idfv)
{
Console.WriteLine($"ObjectUID: {objectUID}");
Console.WriteLine($"IDFV: {idfv}");
//some other code
}

[HttpGet]
public MyObject Retrieve(string objectUID)
{
Console.Writeline($"ObjectUID: {objectUID}");
//Some Code
}
}

这是我的路线。

app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=MyController}/{action=Index}/{id?}");
});

最佳答案

如果您不确定它为什么不起作用,请尝试在 Docs 中解释的属性路由那么你可以这样试试:

[Route("[controller]/[action]")]
public class MyController : Controller
{
public IActionResult Index()
{
return View();
}

[HttpPost]
public void Store([FromBody]MyObject obj)
{
Console.WriteLine(Request.Body);
//Some code
}
// If you have a parameter from the uri or query-string, you can add it to the Template this way
[HttpGet("{objectUID} ")]
public void Check(string objectUID, string idfv)
{
Console.WriteLine($"ObjectUID: {objectUID}");
Console.WriteLine($"IDFV: {idfv}");
//some other code
}
// Or optional parameter like this
[HttpGet ("{objectUID?} ")]
public MyObject Retrieve(string objectUID)
{
Console.Writeline($"ObjectUID: {objectUID}");
//Some Code
}
}

关于c# - .NET Core 2.0 MVC odd 404 on controller methods only when deployed to IIS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50261475/

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