使用 Sql Server Compact 处理 web.config 时访问被拒绝

使用 Sql Server Compact 处理 web.config 时访问被拒绝

我刚刚将一个 ASP.NET MVC3 网站部署到一个新的托管商。它正在使用 Plesk 控制面板。该网站正在使用 Sql Server Compact 4.0 和EricEJ 的 Sql Server Compact 成员资格和角色提供程序

当尝试访问该网站时,我在添加 SqlCeMembershipProvider 的 web.config 文件中收到访问被拒绝错误:

描述:处理服务此请求所需的配置文件时发生错误。请查看以下具体错误详细信息并适当修改配置文件。

分析器错误消息:访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))

源错误:

Line 31:         <clear /> 
Line 32:         <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> 
Line 33:         <add name="SqlCeMembershipProvider" type="ErikEJ.SqlCeMembershipProvider, ErikEJ.SqlCeMembership" connectionStringName="SqlCeServices" applicationName="/" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" passwordFormat="Hashed" writeExceptionsToEventLog="false" /> 
Line 34:       </providers> 
Line 35:     </membership>

SqlCeServices连接字符串配置如下:

<connectionStrings>
    <add name="SqlCeServices" connectionString="data source=|DataDirectory|\SqlCeAspnetdb.sdf" />
</connectionStrings>

当我转到 Plesk 控制面板中的“文件管理器”,然后单击“App_Data”文件夹的“更改权限”时,所有用户(我可以配置)都具有写入和修改权限:

app_data 的权限

但是,当我单击“高级”按钮时,我看到的是:

app_data 的高级权限

底部的“Plesk IIS WP 用户 (IWPD_321)”条目具有所有权限。但显然,顶部还有 2 个针对同一用户的附加条目。这些条目没有写入权限,但我对这两个条目所做的任何更改都不会保存。当我返回屏幕时,它们再次显示为(没有写入权限)。

我不确定我能做什么,或者我必须询问主机提供商的帮助台才能解决这个问题(他们似乎没有使用 Sql Server Compact 的经验)。

我尝试从 web.config 中删除使用 SqlServerCe 连接字符串的行,然后我可以运行该站点,但我无法创建(注册)用户或角色,因为我没有 Sql Server 数据库。

对于下一步该尝试什么,有什么建议吗?

答案1

我找到了解决方案。我需要添加对 \bin 文件夹及其所有子对象的“读取/执行”权限针对“Plesk IIS WP 用户(IWPD_321)”用户。

\bin 文件夹是 Sql Server Compact 二进制文件所在的位置。

我想我太关注 \App_Data 文件夹了......

相关内容