问题背景:(1)有两台服务器a和b,其中a服务器上运行了应用系统x,b服务器上运行了应用系统y。
  (2)应用系统y采用了IIS windows身份验证,即一登陆该系统就会弹出windows验证框。
  (3)现在已知域用户名和密码,可以登陆到应用系统y。
  (4)应用系统y的代码无法修改。问题是:我不想输入用户名和密码直接登陆应用系统y,而是通过应用系统x把用户名和密码传递到应用系统y上进行自动windows身份验证,从而实现登陆,不要弹出windows验证框。不知道问题是否描述清楚,急盼高人指点,在此拜谢了。先前不小心发到asp板块了:有高人的回答是:HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://yyyyyy");
NetworkCredential myCred = new NetworkCredential(UserName,Password,Domain);request.Credentials = myCred;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream receiveStream = response.GetResponseStream ();
StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8);
Console.WriteLine (readStream.ReadToEnd ());
response.Close ();
readStream.Close ();
我觉得这应该是个有效的方法,但是总是出现远程服务器返回错误: (401) 未经授权。,我自己也尝试着解决下无果。
(1) 用户名,密码和域名都没有输错
(2) 服务器中只开启了windows身份验证,匿名用户是禁用的~~~这个问题到底如何解决,还望各路高手指点迷津,在此拜谢了~~~~

解决方案 »

  1.   

    http://www.cnblogs.com/yzx99/archive/2008/07/18/1245838.htmlhttp://www.cnblogs.com/aqiang/archive/2008/02/22/1077862.html
      

  2.   

    IE能否访问,是否能匿名浏览
    匿名用户是禁用的=>开启
    winform webbrower
    WebRequest wreq = WebRequest.Create(uri);
    string uid = "";
    string pwd = "";
    string domain = "";
    NetworkCredential nc = new NetworkCredential(uid, pwd, domain);
    wreq.Credentials = nc;
    WebResponse wres = wreq.GetResponse();
    Stream st = wres.GetResponseStream();
    StreamReader sr = new StreamReader(st);
    string res = sr.ReadToEnd();
    sr.Close();
    st.Close();
      

  3.   


    感谢你的回复,IE输入域帐户和密码是能够访问的,匿名是不能够浏览的,如果不开启匿名用户,只开启windows身份验证是否有办法?