Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自定义角色提供程序在部署到web应用时不工作';s bin目录_C#_Asp.net_Authentication_Membership Provider_Roleprovider - Fatal编程技术网

C# 自定义角色提供程序在部署到web应用时不工作';s bin目录

C# 自定义角色提供程序在部署到web应用时不工作';s bin目录,c#,asp.net,authentication,membership-provider,roleprovider,C#,Asp.net,Authentication,Membership Provider,Roleprovider,我已经为SharePoint web应用程序创建了自定义成员资格和角色提供程序 如果我将这些类的DLL部署到GAC中,那么成员资格/角色设置就可以正常工作。如果我将这些DLL部署到IIS中web应用程序的bin文件夹中,则web应用程序在浏览该站点时会立即退出服务器错误 分析器错误消息:调用目标已引发异常 如果我在错误页面上查看源代码,我会得到更多信息: [ConfigurationErrorsException]:调用目标已引发异常。(C:\inetpub\wwwroot\wss\Virtua

我已经为SharePoint web应用程序创建了自定义成员资格和角色提供程序

如果我将这些类的DLL部署到GAC中,那么成员资格/角色设置就可以正常工作。如果我将这些DLL部署到IIS中web应用程序的bin文件夹中,则web应用程序在浏览该站点时会立即退出服务器错误

分析器错误消息:调用目标已引发异常

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

[ConfigurationErrorsException]:调用目标已引发异常。(C:\inetpub\wwwroot\wss\VirtualDirectories\theportal.com80\web.config第119行) 在System.Web.Security.Roles.Initialize()中 位于System.Web.Security.RoleManager模块.OnLeave(对象源,EventArgs EventArgs) 在System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()中 在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)

它指的是:

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

它必须是一个权限的东西,因为正如我所说的,如果部署到GAC就不会有错误——而且,如果我完全信任web应用的web.config,就不会有错误

<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 dir中工作?什么可能导致它们失败?

这可能是一个猜测,但也许:您的应用程序根目录是否降低了几级?i、 e

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

http://foo.com/
??如果是这样,您需要确保IIS知道要考虑<代码> /MyAPP< />代码> /Bar /MyApp < /代码>应用程序根目录,点击IIS中的“创建应用程序”(它将得到一个BOG图标)。
本质上,
~/bin
是相对于应用程序根目录的,默认情况下,应用程序根目录是站点根目录。因此,即使您的代码位于
/bar/MyApp
,它也在
/bin/some.dll
中查找dll。通过正确标记应用程序根目录,它将查找
/bar/MyApp/bin/some.dll

谢谢是的,应用程序根目录就是站点根目录(据我所知,无论如何——完全可能SP在幕后做了一些我不知道的恶作剧…)。但是,如果我在web.config中将信任设置为Full,提供者就可以工作,所以我想它至少可以找到DLL?