一切都在本地工作正常,但是当我发布时,我得到下面的错误。我正在使用表单身份验证,但我将自己的连接字符串定义为非sqlexpress数据库。我不明白为什么我的应用程序需要访问在App_Data文件夹中创建数据库(或其他任何东西),因为我的数据库不存在/不存在。任何帮助表示赞赏。
连接字符串:
<connectionStrings>
<add name="DataContext" providerName="System.Data.SqlClient" connectionString="Data Source=localhost;Initial Catalog={my db};Integrated Security=SSPI;MultipleActiveResultSets=True" />
</connectionStrings>
错误:
拒绝访问创建App_Data子目录
描述:出于安全原因,标识“IIS APPPOOL \ ASP.NET v4.0”(运行此Web应用程序的标识)没有权限在应用程序根目录中创建App_Data子目录。 ASP.NET将用于诸如Membership和Profile等服务的Microsoft SQL Express数据库文件存储在应用程序的App_Data子目录中。
编辑:它告诉我如何通过添加App_Data文件夹并提供正确的权限来修复错误,但我不明白为什么我需要这个文件夹,如果我可以避免更改权限,我会喜欢到。
答案 0 :(得分:1)
我想我终于想出了如何阻止ASP自动尝试在App_Data文件夹中创建ASPNETDB.MDF数据库。我发现的工作结合了两个现有的stackoverflow答案:
Disable SQL Membership Provider (ASP.Net Forms Authentication)
事实证明,在生产机器上,SQL成员资格提供程序是在machine.config中定义的。我不认为操作团队改变了默认的Windows 2008安装中的任何内容,因此该平台通常可能就是这种情况。
要删除对更高级别定义的任何SQL提供程序的引用,请在web.config中包含以下内容
<membership>
<providers>
<clear />
</providers>
</membership>
<roleManager enabled="false">
<providers>
<clear />
</providers>
</roleManager>
<profile>
<providers>
<clear />
</providers>
</profile>
AspNet Role provider kicking in and it shouldn't be
要禁用“SimpleMembership”,您可以使用value =“false”(web.config)添加应用设置enableSimpleMembership。这将阻止webmatrix重新配置RoleManager。
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<appSettings>
<add key="enableSimpleMembership" value="false" />
</appSettings>
</configuration>
答案 1 :(得分:0)
检查web.config中'membership'节点的'connectionStringName'属性是否设置为您的connectionstring,如下所示:
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider"
type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
connectionStringName="DataContext"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
答案 2 :(得分:0)
*<membership>
<providers>
<clear />
</providers>
</membership>
<roleManager enabled="false">
<providers>
<clear />
</providers>
</roleManager>
<profile>
<providers>
<clear />
</providers>
</profile>*