最近在一个项目中公布了一个WebServers,但是从远程调用的时候总是出错,后来发现出错的原因是项目采用了窗体身份验证.
<authentication mode="Forms">
   <forms name=".OnLineWork" loginUrl="logoin.aspx" protection="All" timeout="60" />
  </authentication>
  <authorization>
   <deny users="?" />
 </authorization>
直接调用项目中公布出的方法会使得页面返回到logoin.aspx,从而出现错误.

后来在Web.config的<configuration>中加入
<location path="WebServers/KnowledgeService.asmx">
  <system.web>
   <authorization>
    <allow users="?" />
   </authorization>
  </system.web>
 </location>
解决了这一问题,这样可以使得在访问此页面时不进行身份验证.