自己实在是想不通了,看了许多资料也无法解决,希望大家能帮一把。
    我开发了一个ASP.NET web service程序,并又编写了一个ASP.NET web application 客户端程序来访问它。我不希望我编写的这个服务被其他人随便调用,于是我对web service使用了windows集成验证,并取消了匿名访问。方法:
服务器端:
 1.我把该服务的iis设置为拒绝匿名访问,并选中windows集成验证。
 2.修改配置文件
   <authentication mode= "Windows">
   </authentication>  
客户端在page_Load中使用下列代码:
  testMyService.myService.Service1 s1 = new testMyService.myService.Service1();
  s1.PreAuthenticate = true;//启用预身份验证
  NetworkCredential crendential = new NetworkCredential("user","123",“domain”);
其中的user,123,domain为服务器机器的一个用户的用户名,密码,和域名。奇怪的事情发生了,做测试的时候,我在其他的机器上访问我的客户端程序,有时候(并不是每次)会跳出错误页面说是The request failed with HTTP status 401: Unauthorized. 然后我只要刷新一下页面就可以正确的进入到我默认的起始页面了。
我想这一定是验证的问题,因为我如果允许web service匿名访问,上述的错误就从来没有出现。
可是我必须要进行验证的,所以希望大家能帮我解决这个问题。谢谢!