Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 控制台应用程序中的ASP.Net MVC Cookies_Asp.net Mvc_Cookies - Fatal编程技术网

Asp.net mvc 控制台应用程序中的ASP.Net MVC Cookies

Asp.net mvc 控制台应用程序中的ASP.Net MVC Cookies,asp.net-mvc,cookies,Asp.net Mvc,Cookies,我正在尝试创建一个ASP.NETMVC端点以进行外部身份验证。我的想法是,我可以从控制台应用程序、WPF应用程序或其他任何程序调用端点,并使用MVC模式为我的服务、将JSON返回给经过身份验证的用户、通过属性检查身份验证等。我现在使用控制台应用程序只是因为它快速简单 到目前为止,我有: 在我的控制台应用程序中: Public Sub MakeLoginRequest() Dim address As Uri = New Uri("http://localhost:50536/Ac

我正在尝试创建一个ASP.NETMVC端点以进行外部身份验证。我的想法是,我可以从控制台应用程序、WPF应用程序或其他任何程序调用端点,并使用MVC模式为我的服务、将JSON返回给经过身份验证的用户、通过属性检查身份验证等。我现在使用控制台应用程序只是因为它快速简单

到目前为止,我有:

在我的控制台应用程序中:

Public Sub MakeLoginRequest()
        Dim address As Uri = New Uri("http://localhost:50536/Account/LogIn")
        Dim request As HttpWebRequest = HttpWebRequest.Create(address)
        request.Method = "POST"
        request.ContentType = "application/json; charset=utf-8"

        Dim loginModel As New LogOnModel With {.UserName = "Richard",
                                               .Password = "Password1",
                                               .RememberMe = False}

        Dim jsonData As String = JsonConvert.SerializeObject(loginModel)
        Dim bytes As Byte() = System.Text.Encoding.ASCII.GetBytes(jsonData)
        request.GetRequestStream.Write(bytes, 0, bytes.Count)

        Dim response As HttpWebResponse = request.GetResponse()
End Sub
在我的控制器中:

<HttpPost()>
Public Function LogIn(model As LogOnModel) As ActionResult
    If ModelState.IsValid Then
        If Membership.ValidateUser(model.UserName, model.Password) Then
            Dim cookie As HttpCookie = FormsAuthentication.GetAuthCookie(model.UserName, False)
            cookie.Expires = DateTime.Now.AddMinutes(20)
            Request.Cookies.Add(cookie)
            Request.Cookies.Add(New HttpCookie("Barney", "Rubble"))

            Return Content("Logged In Ok")
        Else
            Return New HttpUnauthorizedResult
        End If
    Else
        Return New HttpUnauthorizedResult
    End If
End Function

作为ActionResult的公共函数登录(模型为LogOnModel)
如果ModelState.IsValid,则
如果Membership.ValidateUser(model.UserName,model.Password),则
Dim cookie作为HttpCookie=FormsAuthentication.GetAuthCookie(model.UserName,False)
cookie.Expires=DateTime.Now.AddMinutes(20)
Request.Cookies.Add(cookie)
Request.Cookies.Add(新的HttpCookie(“Barney”、“browse”))
返回内容(“登录正常”)
其他的
返回新的HttpUnauthorizedResult
如果结束
其他的
返回新的HttpUnauthorizedResult
如果结束
端函数
现在,当我在控制台应用程序中检查响应时,从来没有任何cookie-既没有真正的Auth cookie,也没有我伪造的Barney碎石cookie出现

然而。。。我在Chrome上打了同样的电话并检查了回复。。。两块饼干都在那儿


有人知道出了什么问题吗?

您需要根据您的请求设置CookieContainer,如下所述:


哇,我想这可能是我在做/没有做的蠢事,但那几乎是可耻的!真有魅力!