ASP.NET WebForms - routing gives 'page not found error ' - c#

I am using asp.net routing and getting a 404 error.
If I do not use an id value then I can see page.
But I want to pass iddata with route and getting 404 Page Not Found error.
Not sure why we see error when we want to use parameters.
With Parameters (404 File or Directory not found error)
routes.MapPageRoute( "Product", "product/{id}", "~/Pages/Product.aspx" );
Without Parameters (Page Works)
routes.MapPageRoute( "Product", "product", "~/Pages/Product.aspx" );
UPDATED NOTE: I have tested all routes if i add product/{id}, contact/{id} or etc. It causes all the same 404 error.
URL: test.com/product > WORKS
test.com/product/{id} > NOT FOUND

try this with * query values
routes.MapPageRoute(
"Product",
"product/{Id}/{*queryvalues}",
"~/Pages/Product.aspx"
);

Related

Issue with MVC Routing?

I have an issue in Routing in MFA where link like
Project_Name\Controller\Index is working, whereas
Project_Name\Controller\ is not working
This is happening for only some controllers after being deployed in a server.
I am getting the following error:
403 - Forbidden: Access is denied.You do not have permission to view this directory or page using the credentials that you supplied.
Is there any further configuration values that needs to be considered?
In RouteConfig we define the route path like this
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
So the controller you are using may have Index action method and the URL works.
But if your controller does not contain Index method or it is having parameters then it will not work.
This is a possible solution that you might create an action method named Index in all those controllers.
for more, you need to share some more details.

Program trying to load the cs.html file, giving a 404

I am getting a HTTP 404.
I don't know what I did that suddenly started causing this error. I changed the startpage, then it began reporting this error.
I have found the file RouteConfig.cs (guessing this is where the solution might be) which looks like this:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Member", action = "AddMember", id = UrlParameter.Optional }
);
The error I am getting says that the ressource could not be found, reports this URL:
http://localhost:53043/Views/Member/AddMember.cshtml
I noticed that it suddenly want's to look for the .cshtml file. But isn't this wrong?
The controller to the AddMember View looks like this:
public ActionResult AddMember()
{
return View();
}
If I rightclick on the AddMember.cshtml file, and choose View in browser, then the page show up just fine, and the URL looks like this http://localhost:53043/Member/AddMember
Any idea to how I can solve this pls?
If I rightclick on the AddMember.cshtml file, and choose View in browser, then the page show up just fine, and the URL looks like this http://localhost:53043/Member/AddMember
The expected url for any cshtml page (or ActionResult of a controller) in MVC C# is http://localhost:{port}/{controller}/{action}/{id} where id is optional as stated in the route config.
The way you're trying to view the page http://localhost:{port}/Views/{controller}/{action}.cshtml is the file directory of the view and not the way to view a cshtml file in the browser.
To view a result of any cshtml file, simply press F5, Ctrl + F5, or right click and view in browser, they all return same result. Good luck.
The URL is wrong , you cannot directly load the ".cshtml" file. In MVC , you need to call the controller method which then calls the view. If your controller name is "Member" and method name is "AddMember" then the URL should be listed as mentioned below. Hope This Helps!
http://localhost:53043/Views/Member/AddMember.cshtml

MVC C# Bad URL handling with multiple parameter

I am new to MVC. Actually, I am trying to handle the bad request for my application. I have added Application_Error method in Global.asax and also created a controller to handle the 404-page error. Now this works fine when my URL is like following.
https://localhost:44397/t/t/t
It shows proper 404 page I have set for the bad URL
But It shows again 404 page when my URL is something like following
https://localhost:44397/t/t/t/e
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
Can anyone help me how I can restrict above URL? Following is my route.config code.
routes.MapRoute(
"ErrorHandler",
"ErrorHandler/{action}/{errorMSG}/",
new { controller = "ErrorHandler", action = "Index", errMsg = UrlParameter.Optional }
,
namespaces: new[] { "MyProject.Web.Controllers" }
);
You need to register an additional route at the end of all valid routes which would match any URL. Sample code below. This will handle all invalid requests to your application.
routes.MapRoute(
"AllInvalidRoutes",
"{*.}",
new { controller = "InvalidRoutesController", action = "Index" }
);

MVC cache error page

When there is a 404 error, my application redirects to page http://localhost:41083/hata/page-not-found
Once my page http://localhost:41083/iletisim/musterimiz-olun redirects to 404 page, even though I fix the error it still goes to 404 page, it does not hit the controller's action. However when I call the http://localhost:41083/Contact/CreateAccount page which is the same page without url rewriting it shows the page without any problem.
So is it caching the page by url? If so, how can I disable it? I am not using any output caching on the action and my site runs on IIS Express.
My Route Config and ContactController:
routes.MapRoute(
name: "musterimiz-olun",
url: "iletisim/musterimiz-olun",
defaults: new { controller = "Contact", action = "CreateAccount" },
namespaces: new[] { "OyakCorporate.Controllers" }
);
public ActionResult CreateAccount()
{
return View();
}
Using Redirect() instead of RedirectPermanent() in Application_Error() method on Global.asax solved the issue.

ASP.NET MVC5 - Routed page loads but doesn't fire

I'm trying to get the open authentication for google working in my application. Using information found in the comments of this answer: https://stackoverflow.com/a/23094155/526704
So I added this route to the top of my RegisterRoutes method:
routes.MapRoute(
name: "signin-google",
url: "signin-google",
defaults: new { controller = "Account", action = "ExternalLoginCallback"}
);
Before doing this, navigating to localhost:port/signin-google gave me a 404, but now it just gives me an empty page. When I navigate directly to /Account/ExternalLoginCallback, it sees it wasn't given any login data, so it returns me to the login page (per the logic in the controller). When I put a breakpoint at the top of the ExternalLoginCallback method, it fires when I navigate to it directly, but not when I load /signin-google.
Why is the route returning an empty page?
There must be some sort of built-in route for /google-signin. I didn't solve this exact issue, but I was able to get Google OAUTH working with information from this link:
http://www.asp.net/mvc/tutorials/mvc-5/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on

Categories

Resources