0

Controller:

public class HomeController : Controller
{
    Models.MakaleSitesiDBEntities entity = new Models.MakaleSitesiDBEntities();

    public ActionResult ArticlesByCategory(int CategoryId)
    {
        IEnumerable<Models.TableArticles> articles = entity.TableArticles.Where(a => a.CategoryId == CategoryId && a.IsActive == true).OrderBy(a => a.PublishedOn);

        return View(articles.Reverse());
    }

    public ActionResult ArticleDetails(Guid ArticleId)
    {
        if (Session["IsUserRead"] == null || (Guid)Session["IsUserRead"] != ArticleId)
        {
            Session["IsUserRead"] = ArticleId;
            Models.TableArticles article = entity.TableArticles.Where(a => a.ArticleId == ArticleId).SingleOrDefault();
            article.ViewCount++;
            entity.SaveChanges();
        }

        return View(entity.TableArticles.Where(a => a.ArticleId == ArticleId).SingleOrDefault());
    }
}

ArticlesByCategory allows Anonymous Users but ArticleDetails not. It routes page to loginpage?

global.asax

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;

namespace MakaleSitesi
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode, 
// visit http://go.microsoft.com/?LinkId=9394801

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        // Use LocalDB for Entity Framework by default
        Database.DefaultConnectionFactory = new SqlConnectionFactory("Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);

        BundleTable.Bundles.RegisterTemplateBundles();
    }
}
}

Why this is happening?

2
  • You need to post your routing code (global.asax.cs usually). Commented Jun 27, 2012 at 8:47
  • 1
    Please show your full routing setup in Global.asax as well as the url you are typing in your browser address bar to access to this action. I suspect that the request is routed to some other controller action which is decorated with the Authorize attribute and not to the ArticleDetails action. Commented Jun 27, 2012 at 8:49

2 Answers 2

2

One possible explanation for this behavior is that the request is hitting some other controller action that is decorated with the [Authorize] attribute, not the ArticleDetails action. This could happen because of some custom routing setup that you might have done which doesn't work as you expect.

Another possible explanation is that you have some configuration in IIS or whatever web server you are using which denies anonymous access to a given url.

Sign up to request clarification or add additional context in comments.

3 Comments

It was working yesterday. I modified myproject and loaded it to server again. now it does not work. (I m loading it to server without publishing)
I added Global.asax Please help me how can I fix it.
I fixed it. There is a partialview that is in action that is decorated with auth. attr. I changed it to AllowAnonymous.
0

Most likely a setting in the authentication or authorization section in Web.config, the following would produce this behavior:

<system.web>
  <authentication mode="Forms">
    <forms loginUrl="~/Login/Index" defaultUrl="/Home" timeout="60" />
  </authentication>
  <authorization>
    <deny users="?" />
  </authorization>
</system.web>

<location path="home/ArticlesByCategory">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.