自定义角色提供程序在部署到web应用程序的bin目录时不起作用

本文关键字:bin 应用程序 不起作用 web 角色 程序 部署 自定义 | 更新日期: 2023-09-27 17:49:17

我已经为一个SharePoint web应用程序创建了自定义成员和角色提供者。

如果我将这些类的DLL部署到GAC中,成员资格/角色配置工作得很好。如果我将这些dll部署到IIS中的web应用程序的bin文件夹中,web应用程序在浏览到该站点时立即以服务器错误的方式退出。

解析器错误消息:异常已被调用的目标抛出。

如果我在错误页面上查看源代码,我会得到更多信息:

[ConfigurationErrorsException]:异常已被调用的目标抛出。(C:'inetpub'wwwroot'wss'VirtualDirectories'theportal.com80'web.config line 119)在System.Web.Security.Roles.Initialize ()在System.Web.Security.RoleManagerModule。OnLeave(对象源,EventArgs)在System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute ()在System.Web.HttpApplication。ExecuteStep(IExecutionStep step, Boolean&completedSynchronously)

它所指的行是:

<add name="PortalRoleProvider" applicationName="/" 
     type="Portal.Security.PortalRoleProvider, 
           Portal.Security, Version=1.1.0.0, 
           Culture=neutral,PublicKeyToken=5be544eaa65820dd" 
/>

它必须是一个权限的东西,因为就像我说的,如果部署到GAC没有错误——而且,如果我设置web应用程序的web也没有错误。配置为完全信任。

<trust level="full" />

我已经添加了CAS策略(好吧,WSPBuilder已经自动为我添加了它们)。但它们似乎不起作用。对于包含角色提供程序的DLL,它们如下:

<PermissionSet class="NamedPermissionSet" version="1" Description="WSPBuilder generated permissionSet" Name="portal.shareddllsinstaller.wsp-3a7ba544-2178-4505-a9d9-28622c565d07-1">
    <IPermission class="AspNetHostingPermission" version="1" Level="Medium" />
    <IPermission class="SecurityPermission" version="1" Flags="Assertion, Execution, ControlThread, ControlPrincipal, RemotingConfiguration" />
    <IPermission class="SharePointPermission" version="1" ObjectModel="True" />
    <IPermission class="EnvironmentPermission" version="1" Read="TEMP;TMP;USERNAME;OS;COMPUTERNAME" />
    <IPermission class="PrintingPermission" version="1" Level="DefaultPrinting" />
    <IPermission class="WebPartPermission" version="1" Connections="True" />
    <IPermission class="FileIOPermission" version="1" Read="$AppDir$" Write="$AppDir$" Append="$AppDir$" PathDiscovery="$AppDir$" />
    <IPermission class="WebPermission" version="1">
        <ConnectAccess>
            <URI uri="$OriginHost$" />
        </ConnectAccess>
    </IPermission>
    <IPermission class="IsolatedStorageFilePermission" version="1" Allowed="AssemblyIsolationByUser" UserQuota="9223372036854775807" />
    <IPermission class="DnsPermission" version="1" Unrestricted="true" />
    <IPermission class="SmtpPermission" version="1" Access="Connect" />
    <IPermission class="SqlClientPermission" version="1" Unrestricted="true" />
</PermissionSet>

有什么想法如何让这些自定义角色/成员提供程序在bin目录中工作吗?是什么导致了它们的失败?

自定义角色提供程序在部署到web应用程序的bin目录时不起作用

这可能是一个大胆的猜测,但也许:您的应用程序根在下面几层吗?例如

http://foo.com/MyApp
http://foo.com/bar/MyApp
不是

http://foo.com/

?如果是这样,你需要确保IIS知道/MyApp//bar/MyApp是应用程序的根,在IIS中点击"创建应用程序"(它会得到一个博客图标)。

本质上,~/bin是相对于app-root的,app-root默认为 site-root。因此,即使您的代码在/bar/MyApp,它正在寻找/bin/some.dll中的dll。通过正确标记应用程序根,它将查找/bar/MyApp/bin/some.dll