C# 正在尝试阅读表单,以便在站点的其他区域阅读身份证

C# 正在尝试阅读表单,以便在站点的其他区域阅读身份证,c#,asp.net-mvc,authentication,authorization,C#,Asp.net Mvc,Authentication,Authorization,注意:我在这里包含了3个指向本地主机区域的链接,但无法提交帖子,因此我用空格字符将它们分隔开来,以便在stackoverflow上发布 我的解决方案中目前有2个ASP.NET MVC应用程序。首先,我通过将第一个设置为startup project来运行它。它会转到登录页面,输入数据后,我将从该页面执行以下代码: var authTicket = new FormsAuthenticationTicket(1, login.LoginDataContract.MSISDN, DateTime.N

注意:我在这里包含了3个指向本地主机区域的链接,但无法提交帖子,因此我用空格字符将它们分隔开来,以便在stackoverflow上发布

我的解决方案中目前有2个ASP.NET MVC应用程序。首先,我通过将第一个设置为startup project来运行它。它会转到登录页面,输入数据后,我将从该页面执行以下代码:

var authTicket = new FormsAuthenticationTicket(1, login.LoginDataContract.MSISDN, DateTime.Now,
                                                           DateTime.Now.AddMinutes(Convert.ToDouble("30")), true, "");

            string cookieContents = FormsAuthentication.Encrypt(authTicket);

            var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieContents)
                             {
                                 Expires = authTicket.Expiration,
                                 //Path = FormsAuthentication.FormsCookiePath
                                 //Path = "http://localhost"
                                 Domain = ""
                             };

            if (System.Web.HttpContext.Current != null)
            {
                System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
            }
正如您所看到的,我已经设置了Domain=,因此理论上讲,它应该适用于我的http://localhost下的任何事情。然后我将cookie的持久安全性设置为true,这样我就可以从localhost下的任何位置访问它

cookie写得很好,我登录了,现在一切正常。顺便说一句,这个登录页面的url是:http//localhost/MyAccount/login

现在,我停止解决方案,并将其他MVC应用程序设置为启动。然后我运行它。第二个站点的URL是:http://localhost/WebActivations/ 以下是其他应用程序启动控制器中的代码:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewData["Message"] = "Welcome to ASP.NET MVC!";

        // PASHA: Added code to read the authorization cookie set at
        // login in MyAccount *.sln

        for (int i = 0; i < System.Web.HttpContext.Current.Request.Cookies.Count;i++)
        {
            Response.Write(System.Web.HttpContext.Current.Request.Cookies[i].Name + " " + System.Web.HttpContext.Current.Request.Cookies[i].Value);
        }

        HttpCookie authorizationCookie = System.Web.HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName.ToString()];

        // decrypt.
        FormsAuthenticationTicket authorizationForm = FormsAuthentication.Decrypt(authorizationCookie.Value);

        ViewData["Message"] = authorizationForm.UserData[0].ToString();

        return View();
    }

    public ActionResult About()
    {
        return View();
    }
问题是在这个主控制器中,当我运行解决方案时,它无法读取身份验证cookie,您可以看到那里的循环,它没有找到.ASPXAUTH cookie

但一旦它在Firefox中崩溃,我会查看页面信息,然后查看安全性和Cookies,它在那里,它是同一个cookie


我做错了什么?

试着在两个站点的web.configs中都设置Domain=localhost

我的坏我忘了添加mahineKey元素。

我的坏在两个站点的web.configs中我都忘了添加元素。我在那个该死的问题上工作了14个小时,那个该死的机器钥匙解决了它。我爱你,兄弟: