CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  Web Services

急!!!求救!!我用vb.net在iis非匿名设置下,调用服务器上的 webservices 总报错 "远程服务器返回错误: (401) 未经授权"

楼主Dave_net(振)2005-08-17 20:06:10 在 .NET技术 / Web Services 提问

请麻烦详细讲出pc上的设置(前提服务器上不允许匿名访问),vb.net和webservices两边需要的代码    
   
  我的vb代码是:  
  Private   Sub   btnScan_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   btnScan.Click  
   
        Dim   varItem   As   String  
   
                  If   txtScan.Text   =   ""   Then  
                          MessageBox.Show("Item   No   is   Null,Scan   again!")  
                          txtScan.Focus()  
                          Exit   Sub  
                  End   If  
                  Dim   t   As   Boolean  
   
                  Dim   a   As   New   SAE.Service1  
                  a.Credentials   =   New   System.Net.NetworkCredential("quake",   "111")  
   
                  Dim   i   As   Integer  
   
                   
        Dim   url   As   String  
                  url   =   "http://"   &   elemSetting(0).Item                         ("ip").InnerText&   "/saeservice/saeservice.asmx"  
                  a.Url   =   url  
                      varItem   =   a.Insert(txtScan.Text.Trim)  
   
  webservices   的webconfig  
  <authentication   mode="Windows"   />    
   
  <authorization>  
                  <allow   users="quake"   />    
   
  </authorization>  
   
  问题点数:100、回复次数:9Top

1 楼Tomgus(小桥流水)回复于 2005-08-17 20:43:40 得分 50

http://www.netbei.com/Article/asp/asp18/200411/2986.html  
  1、错误号401.1    
  症状:HTTP   错误   401.1   -   未经授权:访问由于凭据无效被拒绝。    
  分析:    
  由于用户匿名访问使用的账号(默认是IUSR_机器名)被禁用,或者没有权限访问计算机,将造成用户无法访问。    
  解决方案:    
  (1)查看IIS管理器中站点安全设置的匿名帐户是否被禁用,如果是,请尝试用以下办法启用:    
  控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。如果还没有解决,请继续下一步。    
  (2)查看本地安全策略中,IIS管理器中站点的默认匿名访问帐号或者其所属的组是否有通过网络访问服务器的权限,如果没有尝试用以下步骤赋予权限:    
  开始->程序->管理工具->本地安全策略->安全策略->本地策略->用户权限分配,双击“从网络访问此计算机”,添加IIS默认用户或者其所属的组。    
  注意:一般自定义   IIS默认匿名访问帐号都属于组,为了安全,没有特殊需要,请遵循此规则。    
   
  2、错误号401.2    
  症状:HTTP   错误   401.2   -   未经授权:访问由于服务器配置被拒绝。    
  原因:关闭了匿名身份验证    
  解决方案:    
  运行inetmgr,打开站点属性->目录安全性->身份验证和访问控制->选中“启用匿名访问”,输入用户名,或者点击“浏览”选择合法的用户,并两次输入密码后确定。    
   
  3、错误号:401.3    
  症状:HTTP   错误   401.3   -   未经授权:访问由于   ACL   对所请求资源的设置被拒绝。    
  原因:IIS匿名用户一般属于Guests组,而我们一般把存放网站的硬盘的权限只分配给administrators组,这时候按照继承原则,网站文件夹也只有administrators组的成员才能访问,导致IIS匿名用户访问该文件的NTFS权限不足,从而导致页面无法访问。    
  解决方案:    
  给IIS匿名用户访问网站文件夹的权限,方法:进入该文件夹的安全选项,添加IIS匿名用户,并赋予相应权限,一般是读、写。Top

2 楼Dave_net(振)回复于 2005-08-18 07:42:07 得分 0

我试过了,普通windows应用程序在非匿名下用  
  a.Credentials   =   New   System.Net.NetworkCredential("quake",   "111")就可以调用  
   
  但我是要运用在智能设备应用程序上,调用时还是报错"远程服务器返回错误:   (401)   未经授权"    
  急啊!!已经想了两天了,哪位大哥救救小弟啊??前提是(非匿名下,智能设备应用程序上调用)Top

3 楼singlepine(小山)回复于 2005-08-18 12:56:14 得分 50

问题1:未启用父路径  
  症状举例:  
  Server.MapPath()   错误   'ASP   0175   :   80004005'    
  不允许的   Path   字符  
  /0709/dqyllhsub/news/OpenDatabase.asp,行   4    
  在   MapPath   的   Path   参数中不允许字符   '..'。  
  原因分析:  
  许多Web页面里要用到诸如../格式的语句(即回到上一层的页面,也就是父路径),而IIS6.0出于安全考虑,这一选项默认是关闭的。  
  解决方法:  
  在IIS中属性->主目录->配置->选项中。把”启用父路径“前面打上勾。确认刷新。  
   
  问题2:ASP的Web扩展配置不当(同样适用于ASP.NET、CGI)  
  症状举例:  
  HTTP   错误   404   -   文件或目录未找到。  
  原因分析:  
  在IIS6.0中新增了web程序扩展这一选项,你可以在其中对ASP、ASP.NET、CGI、IDC等程序进行允许或禁止,默认情况下ASP等程序是禁止的。  
  解决方法:  
  在IIS中的Web服务扩展中选中Active   Server   Pages,点击“允许”。  
  身份认证配置不当    
   
  问题3:身份认证配置不当  
  症状举例:  
  HTTP   错误   401.2   -   未经授权:访问由于服务器配置被拒绝。  
  原因分析:IIS   支持以下几种   Web   身份验证方法:  
  匿名身份验证  
  IIS   创建   IUSR_计算机名称帐户(其中计算机名称是正在运行   IIS   的服务器的名称),用来在匿名用户请求   Web   内容时对他们进行身份验证。此帐户授予用户本地登录权限。你可以将匿名用户访问重置为使用任何有效的   Windows   帐户。  
  基本身份验证  
  使用基本身份验证可限制对   NTFS   格式   Web   服务器上的文件的访问。使用基本身份验证,用户必须输入凭据,而且访问是基于用户   ID   的。用户   ID   和密码都以明文形式在网络间进行发送。  
  Windows   集成身份验证  
  Windows   集成身份验证比基本身份验证安全,而且在用户具有   Windows   域帐户的内部网环境中能很好地发挥作用。在集成的   Windows   身份验证中,浏览器尝试使用当前用户在域登录过程中使用的凭据,如果尝试失败,就会提示该用户输入用户名和密码。如果你使用集成的   Windows   身份验证,则用户的密码将不传送到服务器。如果该用户作为域用户登录到本地计算机,则他在访问此域中的网络计算机时不必再次进行身份验证。  
  摘要身份验证  
  摘要身份验证克服了基本身份验证的许多缺点。在使用摘要身份验证时,密码不是以明文形式发送的。另外,你可以通过代理服务器使用摘要身份验证。摘要身份验证使用一种挑战/响应机制(集成   Windows   身份验证使用的机制),其中的密码是以加密形式发送的。  
  .NET   Passport   身份验证  
  Microsoft   .NET   Passport   是一项用户身份验证服务,它允许单一签入安全性,可使用户在访问启用了   .NET   Passport   的   Web   站点和服务时更加安全。启用了   .NET   Passport   的站点会依靠   .NET   Passport   中央服务器来对用户进行身份验证。但是,该中心服务器不会授权或拒绝特定用户访问各个启用了   .NET   Passport   的站点。  
  解决方法:  
  根据需要配置不同的身份认证(一般为匿名身份认证,这是大多数站点使用的认证方法)。认证选项在IIS的属性->安全性->身份验证和访问控制下配置。  
   
  问题4:IP限制配置不当  
  症状举例:  
  HTTP   错误   403.6   -   禁止访问:客户端的   IP   地址被拒绝。  
  原因分析:  
  IIS提供了IP限制的机制,你可以通过配置来限制某些IP不能访问站点,或者限制仅仅只有某些IP可以访问站点,而如果客户端在被你阻止的IP范围内,或者不在你允许的范围内,则会出现错误提示。  
  解决方法:  
  进入IIS的属性->安全性->IP地址和域名限制。如果要限制某些IP地址的访问,需要选择授权访问,点添加选择不允许的IP地址。反之则可以只允许某些IP地址的访问。    
  IUSR账号被禁用    
   
  问题5:IUSR账号被禁用  
  症状举例:  
  HTTP   错误   401.1   -   未经授权:访问由于凭据无效被拒绝。  
  原因分析:  
  由于用户匿名访问使用的账号是IUSR_机器名,因此如果此账号被禁用,将造成用户无法访问。  
  解决办法:  
  控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。  
   
  问题6:NTFS权限设置不当  
  症状举例:  
  HTTP   错误   401.3   -   未经授权:访问由于   ACL   对所请求资源的设置被拒绝。  
  原因分析:  
  Web客户端的用户隶属于user组,因此,如果该文件的NTFS权限不足(例如没有读权限),则会导致页面无法访问。  
  解决办法:  
  进入该文件夹的安全选项卡,配置user的权限,至少要给读权限。关于NTFS权限设置这里不再馈述。    
  IWAM账号不同步    
   
  问题7:IWAM账号不同步  
  症状举例:  
  HTTP   500   -   内部服务器错误  
  原因分析:  
  IWAM账号是安装IIS时系统自动建立的一个内置账号。IWAM账号建立后被Active   Directory、IIS   metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,并由操作系统负责这三方保存的IWAM密码的同步工作。系统对IWAM账号的密码同步工作有时会失效,导致IWAM账号所用密码不统一。  
  解决办法:  
  如果存在AD,选择开始->程序->管理工具->Active   Directory用户和计算机。为IWAM账号设置密码。  
  运行c:\Inetpub\AdminScripts>adsutil   SET   w3svc/WAMUserPass   +密码同步IIS   metabase数据库密码  
  运行cscript   c:\inetpub\adminscripts   ynciwam.vbs   -v   同步IWAM账号在COM+应用程序中的密码  
   
  问题8:MIME设置问题导致某些类型文件无法下载(以ISO为例)  
  症状举例:  
  HTTP   错误   404   -   文件或目录未找到。  
  原因分析:  
  IIS6.0取消了对某些MIME类型的支持,例如ISO,致使客户端下载出错。  
  解决方法:  
  在IIS中属性->HTTP头->MIME类型->新建。在随后的对话框中,扩展名填入.ISO,MIME类型是application。  
  另外,防火墙阻止,ODBC配置错误,Web服务器性能限制,线程限制等因素也是造成IIS服务器无法访问的可能原因,这里就不再一一馈述了。希望此帖能解决大家的大部分问题:)  
  Top

4 楼jamzh(Show me the money!!!)回复于 2005-08-18 21:46:14 得分 0

kTop

5 楼Dxh_Asp_Net()回复于 2005-08-19 10:57:46 得分 0

在调用方法前加上  
  a.Credentials   =   System.Net.CredentialCache.DefaultCredentials  
  varItem   =   a.Insert(txtScan.Text.Trim)  
   
  试试Top

6 楼Dave_net(振)回复于 2005-08-19 11:59:42 得分 0

请问:       回复人:   Dxh_Asp_Net()  
   
   
   
  CredentialCache   不是System.Net的成员,请问是不是还要声明什么??Top

7 楼Dave_net(振)回复于 2005-08-19 12:05:36 得分 0

原来CredentialCache在windows应用程序中是System.Net的成员,在智能设备应用程序中就不是System.Net的成员了,不知道怎么用CredentialCache类.Top

8 楼huis(暂住制度在中国害苦人啊)回复于 2006-01-08 14:38:19 得分 0

好贴,,,标记一下Top

9 楼windbey(北风)回复于 2006-03-22 23:17:20 得分 0

mark!Top

相关问题

  • 调用WEBSERVICE报错!!!!!!!!
  • 一DLL,VB调用是报错:"bad dll caling convention",为什么?
  • 急:vb调用vc++写的dll,报错:不能找到入口点。为什么???
  • VB调用一个存储过程,为什么老报错?在线等
  • dll调用总是报错
  • 重装系统后,调用webservices的文件一直报错,以前都是ok的
  • 为何我在vb中调用用vc的MFC AppWizard写的dll(一个函数test)报错:BAD Dll calling convertion????
  • 我的vb程序,中间有调用sqlserver,怎么换到别的机子就报错11111
  • 为什么调用timeGetTime()就报错?
  • 为什么我调用CoCreateInstanceEx会报错?

关键词

  • .net
  • asp.net
  • vb.net
  • 验证
  • 账号
  • 用户
  • 服务器
  • 密码
  • 授权
  • iis

得分解答快速导航

  • 帖主:Dave_net
  • Tomgus
  • singlepine

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo