C#的WebClient FormsAuthentication(C# WebClient Form

2019-10-22 06:15发布

编辑:在底部。

我有这个网站,它使用一个WebService。 认证使能,使用这种方法:“ 如何:实现简单的窗体身份验证 ”。

我有一个WinForms应用程序谁不能连接到WebService的(因为这一个需要认证)。 有一个例子如何执行的WebService和的WinForms之间的认证? 我听说System.Net.HttpWebRequest,但我没有找到使用它的一个例子。

class CookieWebClient : WebClient
{
        public CookieContainer CookieContainer { get; private set; }

        /// <summary>
        /// This will instanciate an internal CookieContainer.
        /// </summary>
        public CookieWebClient()
        {
            this.CookieContainer = new CookieContainer();
        }

        /// <summary>
        /// Use this if you want to control the CookieContainer outside this class.
        /// </summary>
        public CookieWebClient(CookieContainer cookieContainer)
        {
            this.CookieContainer = cookieContainer;
        }

        protected override WebRequest GetWebRequest(Uri address)
        {
            var request = base.GetWebRequest(address) as HttpWebRequest;
            if (request == null) return base.GetWebRequest(address);
            request.CookieContainer = CookieContainer;
            return request;
        }
}

而当我想以自己的身份验证:

using (var client = new CookieWebClient())
{
    var values = new NameValueCollection
    {
        { "UserEmail.Text", "Administrator" },
        { "UserPass.Text", "admin" },
    };
    client.UploadValues("http://localhost:54787/logon.aspx", values);

    // If the previous call succeeded we now have a valid authentication cookie
    // so we could download the protected page
    string result = client.DownloadString("http://localhost:54787/MyWantedPage.aspx");
}

问题是,也许,我真的不把正确的用户名和密码(管理员/管理员)在右场在Logon.aspx ...(UserMail和为userpass)。

你有什么事吗? (当然我认为是更容易使用WebClient类。)(如果我真的懂了,NetworkCredentials仅适用于Windows身份验证和基本Authenticaiton心不是我在我的身边已经,FormsAuthentication - ?在我给URL的同一个)

编辑:

OK,我在这里看到:

http://odetocode.com/articles/162.aspx

所以,我也试图进行HttpWebRequest的看到它的网页上。

我得到的关闭响应时此错误:

webRequest.GetResponse().Close();

下面的错误是:

System.Net.WebException: Le serveur distant a retourné une erreur : (500) Erreur interne du serveur.

àSystem.Net.HttpWebRequest.GetResponse()

显然,真的是有我的WebClient POST请求的问题,我的HttpWebRequest的,可能有一些配置IIS服务器上?

再次感谢社会!

Answer 1:

OK,我没有真正找到有关答案。

我这样做的方法是:使用保护窗体身份验证的所有网页。 但是不能保护我wnat消费服务......(因为是的,这是所有这一切的目标!)

非常感谢你反正给大家。



文章来源: C# WebClient FormsAuthentication