基于角色的表单验证 的一些问题
今天下午做了个基于角色的表单验证,是按照基于角色(Role-Based)的表单验证的做法做的。
觉得这种方法挺简单,可是自己重新做一遍的时候,发现一些问题要注意:
如果直接按照上面这篇文章来做,是不能运行的,会产生在应用程序级别以外使用注册为 allowDefinition='MachineToApplication' 的节是错误;
去查了下,很多文章都是说是虚拟目录的问题,如以下文章描述:
--------------------------------------
问:
我们最近在 IIS 5 上安装了 ASP.net,并收到以下消息:
分析器错误信息:在应用程序级别以外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。导致该错误的原因可能是在 IIS 中没有将虚拟目录作为应用程序进行配置。
行 1:<configuration> 行 2:<system.web> 行 3:<authentication mode="Forms"> 行 4:<forms loginUrl="LoginPage.aspx"> 行 5:<credentials passwordFormat="Clear">
有人告诉我这是因为我没有将应用程序文件夹配置为 IIS 中的虚拟目录。但是,这样做并不能解决问题。我们应该如何解决这个问题呢?
答:
安装 ASP.net 后,您可以将 web.config 文件放置在某个属于 Web 服务器的文件夹(Web 根目录、目录或虚拟目录)下,这样 ASP.net 将使用该文件来配置应用程序的各种组件和特性。处理 ASP 应用程序的 global.asa 文件的方法也与此相同。但是,为此,必须在 IIS 插件中,将该文件夹标记为“应用程序"。不过此处应用程序 一词的含义与我们通常所理解的含义不同。在此,它是指设定应用程序的起始点。换句话说,您可以将 Web 站点上的某个文件夹指定为应用程序 A(例如一个购物车应用程序)的起始点,而指定另一个文件夹作为应用程序 B(例如一个执行在线调查的应用程序)的起始点,这样它们将会有不同的 ASP(或 ASP.net)应用程序变量设置。您可以在每个预设置的应用程序起始点中放置不同的 global.asa 或 web.config 文件。
和您所听到的建议不同,这个位置并不要求必须是虚拟目录。它可以是一个普通的文件夹,甚至是 Web 站点的根目录。
下面的屏幕截图(图 1)显示了一个虚拟目录的属性。注意其中的“配置"按钮,另外,这里“应用程序名"文本框是空白的。当您单击“配置"按钮,即为通知 IIS,该目录、虚拟目录或 Web 根目录的位置是应用程序的起始点。应用程序的名称可填,也可不填,但是它对于错误诊断很有帮助,因此您应该指定一个名称。将这个文件夹配置为应用程序后,ASP.net 就会读取您在其中放置的 web.config 文件,问题也就迎刃而解。
----------------------------------------
但是,重新设置了IIS的一些参数,比如匿名用户访问等,都没用,
后来修改了子目录下的Web.config文件:
将<authentication mode="Windows" /> 以及
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="true"
timeout="20"
/>
这两段去掉就可以运行了。
但是不知道是什么原因??
希望园子里的高手能回答一下。。