我在asp.net 2.0上有一个带有命名空间Admin的WebApplication。我有项目的表单验证模式。
<authentication mode="Forms">
<forms name="ASP_XML_Form" loginUrl="Login.aspx" protection="All" timeout="30"
path="/" requireSSL="false" slidingExpiration="true"
cookieless="AutoDetect">
</forms>
</authentication>
现在,我尝试为Authentificatied用户共享一个文件夹(一个内页):
<location path="Recovery">
<system.web>
<roleManager enabled="false" >
</roleManager>
<authentication mode="None">
</authentication>
<authorization>
<allow users="*" />
</authorization>
<httpHandlers>
<remove verb="GET" path="image.aspx" />
<remove verb="GET" path="css.aspx" />
</httpHandlers>
</system.web>
</location>
但是当我在共享文件夹中创建页面时,它无法访问程序集。 我看到这样的错误:
无法加载文件或程序集 'Admin'或其中一个依赖项。 系统找不到该文件 指定。
它还向我显示错误:
ASP.NET运行时错误:这是一个错误 使用注册为的部分 allowDefinition的= 'MachineToApplication' 超出应用水平。这个错误 可以由虚拟目录引起 未配置为应用程序 在IIS中。
当项目在FormsAuthentifications下时,是否有人知道如何共享(Authentification None)一个文件夹(页面)?
答案 0 :(得分:4)
您应该在<location>
元素中包含以下内容:
<location path="Recovery">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
(如果你真的需要删除它们,你也可以包含处理程序元素。)
在非应用程序级别web.config中不允许使用Authentication和RoleManager元素,因此您无法在<location>
元素中定义它们。
编辑以回复评论
很抱歉,澄清一下:您的位置元素太多 - <authentication>
和<roleManager>
元素不允许(除非/ Recovery是IIS中的一个应用程序,并且肯定会导致您在问题中报告的第二个错误,这些错误需要在页面正常显示之前删除。
您是否在任何地方看到“无法找到程序集”错误,或者只是在Recovery文件夹的页面上?该文件夹是否在IIS中标记为“应用程序”?如果是这样,您需要将站点的二进制文件复制到/ Recovery下的/ bin文件夹中,或者删除IIS中该文件夹的应用程序设置。
我刚才意识到,当我的意思是“身份验证元素”时,我在前两部分中说了“授权元素” - 如果感到困惑,请对不起。
编辑以回复第二条评论
基本上,在IIS中,您可以拥有一个或多个网站 - 这些网站是网站的根,并被定义为应用程序起点。
IIS还允许您将网站的子文件夹配置为应用程序,这允许您执行以下操作:
但是,如果您确实将文件夹设置为应用程序,则需要确保所需的所有代码都可以访问,并且当您启动新应用程序时,需要在root / bin(或/ app_code)文件夹中编写代码该文件夹无法再访问该文件夹。
通常,在IIS管理器中,您可以单击该文件夹并删除该应用程序,以便它从根目录继承。
答案 1 :(得分:-1)
检查代码隐藏文件中的命名空间 - 看起来你可能有一些冲突(你是否在另一个文件夹中创建了文件,然后将其物理移动到共享文件夹)。 您还必须设置共享文件夹的位置属性,以便为未经过身份验证的用户共享