英文:
In an ASP.NET Core 7 MVC web application, how do you start a debugging session at a specific path based on an area?
问题
在我的ASP.NET Core 7 MVC Web应用程序中,我正在使用IIS Express进行调试。当应用程序启动时,我希望加载的第一个路由是:
https://localhost:44341/fantasy-football/create/cheatsheet/edit/1645168
这样可以加快调试速度,因为我不必从主页开始,然后点击各种页面才能到达我正在测试的路由。
这个URL路由映射到一个位于区域内的控制器:
/Areas/FantasyFootball/Controllers/Create/CheatSheetController.cs
而操作方法的签名如下:
[Route("/fantasy-football/create/cheatsheet/edit/{id?}", Name = "fantasyfootball.create.cheatsheet.edit")]
public IActionResult Edit(int id)
我尝试更新launchSettings.json
文件中的应用程序URL,但它仍然加载在Program.cs
中定义的默认路由。
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:51696/fantasy-football/create/cheatsheet/edit/1645168",
"sslPort": 44341
}
},
我尝试更新Program.cs
中的默认路由:
app.MapControllerRoute(
name: "default",
pattern: "{area=FantasyFootball}/{controller=CheatSheet}/{action=Edit}/{id=1645168}");
这似乎在浏览器中加载了正确的URL,但我收到了404错误。
英文:
In my ASP.NET Core 7 MVC web application, I am debugging using IIS Express. When the application starts, I want the first route to load to be:
https://localhost:44341/fantasy-football/create/cheatsheet/edit/1645168
This makes it faster to debug as I don't have to start at the home page, then click through various pages to get to the route I'm testing.
This URL route maps to a controller housed in an area:
/Areas/FantasyFootball/Controllers/Create/CheatSheetController.cs
And the action method signature is this:
[Route("/fantasy-football/create/cheatsheet/edit/{id?}", Name = "fantasyfootball.create.cheatsheet.edit")]
public IActionResult Edit(int id)
I have tried to update the application url in the launchSettings.json
file, but it still loads the default route defined in Program.cs
.
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:51696/fantasy-football/create/cheatsheet/edit/1645168",
"sslPort": 44341
}
},
I tried updating the default route in Program.cs
:
app.MapControllerRoute(
name: "default",
pattern: "{area=FantasyFootball}/{controller=CheatSheet}/{action=Edit}/{id=1645168}");
And this seems to load the correct URL in the browser, but I get a 404 error.
答案1
得分: 1
Sure, here's the translated code portion:
请尝试如下:
//区域属性很重要
[Area("fantasy-football")]
public class CheatSheetController : Controller
{
//移除[Route]属性,它将覆盖在Program.cs中注册的路由模式
public IActionResult Edit(int id)
{
return Ok();
}
}
在Program.cs中:
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapAreaControllerRoute(
"fantasy",
"fantasy-football",
pattern: "{area}/Create/{controller}/{action}/{id?}"
);
保留
"applicationUrl": "http://localhost:51696
在launchsetting.json中添加
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "fantasy-football/create/cheatsheet/edit/1645168",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
在配置文件部分
或右键单击项目=>属性=>调试=>打开调试启动配置UI
[![enter image description here][1]][1]
现在调试时没问题:
[![enter image description here][2]][2]
[1]: https://i.stack.imgur.com/f4qdy.png
[2]: https://i.stack.imgur.com/WwraS.gif
Please note that I've provided the translation for the code part as requested. If you need any further assistance or have specific questions about the code, feel free to ask.
英文:
Please try as below:
//Area attribute is important
[Area("fantasy-football")]
public class CheatSheetController : Controller
{
//Remove the [Route] Atrribute which would which would override the route parttern you registed in Program.cs
public IActionResult Edit(int id)
{
return Ok();
}
}
in Program.cs:
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapAreaControllerRoute(
"fantasy",
"fantasy-football",
pattern: "{area}/Create/{controller}/{action}/{id?}"
);
Keep
"applicationUrl": "http://localhost:51696
in your launchsetting.json
add
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "fantasy-football/create/cheatsheet/edit/1645168",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
in profile section
or right click on your project=>properties=>debug=>open debug launch profiles UI
It's ok now,when I debug:
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论