【发布时间】:2018-10-20 01:12:10
【问题描述】:
我的家庭控制器成功从
返回index.html
http://localhost/
和
http://localhost/controller/
但如果我尝试击中
http://localhost/controller/method/
我得到一个404,即使该方法在 IIS express 中运行良好。
在网上找不到任何有类似问题的人的任何东西,只有控制器上的方法在一个特定的部署中不起作用,但控制器本身很好。
在 .Net Core 2.0 的许多 IIS 部署问题中,我尝试过的常见问题:
确保在项目设置和 IIS 中启用了 Windows 身份验证(我已将其打开和关闭都无济于事我的 Web 应用程序上没有用户身份验证,所以我不这么认为对我来说很重要)。
已将我的应用程序池切换为使用
No managed code以获取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?}");
});
【问题讨论】:
-
你能显示一些代码吗?控制器方法和路由属性?
-
@Nikolaus 我添加了一些代码,您可以看到它非常基本的控制器类。我是
.net和 MVC 和 Web 开发的新手,我的理解是我不需要 Route-Attributes,因为 MVC 将创建端点作为方法的名称。无论如何,它都以这种方式在 IIS Express 中工作。您是否建议我执行 Route-Attribution 以查看是否可以解决问题?不知道为什么会在 IIS express 中工作 -
在 Program.cs WebHost.CreateDefaultBuilder(args) 添加 IISIntegration 支持。此外,在 Startup.cs 文件中,app.UseMvc();自动设置默认路由 {controller}/{action} 所以不需要基于自定义属性的路由
-
@MohsinMehmood:不,
app.UseMvc()不会为你设置默认路由。app.UseMvcWithDefaultRoute()确实如此。 -
您是否解决了您的问题,如果没有,您能否添加您的请求?
标签: c# iis asp.net-core asp.net-core-2.0 iis-express