我刚刚将一个 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”文件夹的“更改权限”时,所有用户(我可以配置)都具有写入和修改权限:
但是,当我单击“高级”按钮时,我看到的是:
底部的“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 文件夹了......