3

ユーザーを承認する前に、何らかの操作を実行するREST Webサービスがあります。そのために、チェックする1つのメソッドを呼び出します

 if(System.Web.HttpContext.Current.Session["UserId"] != null)
 {  
   string userId = System.Web.HttpContext.Current.Session["UserId"].ToString();  
 }
 else
 {
   throw exception;
 }

以下のように、asp.net Webアプリケーションでこのサービスを呼び出しています

 HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri);
        req.Method = "POST";
        req.ServicePoint.Expect100Continue = false;
        req.ContentLength = 0;
        req.ContentType = "application/x-www-form-urlencoded";

        if (!string.IsNullOrEmpty(body))
        {
            req.ContentLength = body.Length;
            ASCIIEncoding encoding = new ASCIIEncoding();
            byte[] data = encoding.GetBytes(body);
            Stream newStream = req.GetRequestStream();
            newStream.Write(data, 0, data.Length);
            newStream.Close();
        }

        HttpWebResponse resp;
        try
        {
            resp = (HttpWebResponse)req.GetResponse();
            System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
            return sr.ReadToEnd().Trim();
        }
        catch (WebException ex)
        {
            resp = (HttpWebResponse)ex.Response;

            //pass on the exception
            throw ex;
        }
    }

どうすればuserIdを渡すことができますか.....

私のサービスと私の Web アプリケーションはどちらも同じソリューションにありますが、異なるプロジェクトにあり、userId の値は、アプリケーションにログインしているユーザーに基づいてデータベースから取得されます。

4

2 に答える 2

0

このようなもの

byte[] postBytes = Encoding.UTF8.GetBytes( userId );
                req.ContentType = "application/x-www-form-urlencoded";
                req.ContentLength = postBytes.Length;           

 using( data = req.GetRequestStream() ) { 
                data.Write( postBytes, 0, postBytes.Length );
                data.Close();
            }
于 2012-08-10T08:21:46.307 に答える
0

OpenAuth はこれに適した方法です。

http://www.codeproject.com/Tips/372422/Secure-WCF-RESTful-service-using-OAUTHを確認してください

于 2012-08-10T06:22:29.857 に答える