我想实现的是:客户端上传xml文件之后,服务器端用xml模式文件(xsd)进行验证,if(Session["xml"]==null)
throw new InvalidOperationException ("No XML file has been uploaded yet.");StringReader xmlinput=new StringReader ((string)Session["xml"]);
XmlTextReader reader=new XmlTextReader (xmlinput);
XmlValidatingReader validator=new XmlValidatingReader (reader);XmlSchema schema=XmlSchema.Read (new XmlTextReader ("http://localhost/FriendsReunionUI/Friends.xsd"),null);validator.Schemas .Add (schema);
validator.ValidationType =ValidationType.Schema ;以上语句加在try{}中。我在这一句:
XmlSchema schema=XmlSchema.Read (new XmlTextReader ("http://localhost/FriendsReunionUI/Friends.xsd"),null);
上面设了断点。
运行的时候,到设了断点的这一句时,就直接跳到catch(Exception ex){Label1.Text=ex.Message;}这里来了。Label上的文本为:
远程服务器返回错误: (401) 未经授权。
throw new InvalidOperationException ("No XML file has been uploaded yet.");StringReader xmlinput=new StringReader ((string)Session["xml"]);
XmlTextReader reader=new XmlTextReader (xmlinput);
XmlValidatingReader validator=new XmlValidatingReader (reader);XmlSchema schema=XmlSchema.Read (new XmlTextReader ("http://localhost/FriendsReunionUI/Friends.xsd"),null);validator.Schemas .Add (schema);
validator.ValidationType =ValidationType.Schema ;以上语句加在try{}中。我在这一句:
XmlSchema schema=XmlSchema.Read (new XmlTextReader ("http://localhost/FriendsReunionUI/Friends.xsd"),null);
上面设了断点。
运行的时候,到设了断点的这一句时,就直接跳到catch(Exception ex){Label1.Text=ex.Message;}这里来了。Label上的文本为:
远程服务器返回错误: (401) 未经授权。
{
if(Session["xml"]==null)
throw new InvalidOperationException ("No XML file has been uploaded yet."); StringReader xmlinput=new StringReader ((string)Session["xml"]);
XmlTextReader reader=new XmlTextReader (xmlinput);
XmlValidatingReader validator=new XmlValidatingReader (reader); XmlSchema schema=XmlSchema.Read (new XmlTextReader("http://localhost/FriendsReunionUI/Friends.xsd"),null); validator.Schemas .Add (schema);
validator.ValidationType =ValidationType.Schema ; }catch(Exception ex)
{Label1.Text=ex.Message;}
症状:HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝。
分析:
由于用户匿名访问使用的账号(默认是IUSR_机器名)被禁用,或者没有权限访问计算机,将造成用户无法访问。
解决方案:
(1)查看IIS管理器中站点安全设置的匿名帐户是否被禁用,如果是,请尝试用以下办法启用:
控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。如果还没有解决,请继续下一步。
(2)查看本地安全策略中,IIS管理器中站点的默认匿名访问帐号或者其所属的组是否有通过网络访问服务器的权限,如果没有尝试用以下步骤赋予权限:
开始->程序->管理工具->本地安全策略->安全策略->本地策略->用户权限分配,双击“从网络访问此计算机”,添加IIS默认用户或者其所属的组。
注意:一般自定义 IIS默认匿名访问帐号都属于组,为了安全,没有特殊需要,请遵循此规则。