gpt4 book ai didi

asp.net - ELMAH 无法登录生产环境中的数据库,但无法登录测试服务器

转载 作者:行者123 更新时间:2023-12-01 05:51:24 27 4
gpt4 key购买 nike

首先,这里有一些没有帮助的潜在重复项:
Can't access /elmah on production server with Elmah MVC?
ELMAH doesn't insert error logs to SQL DB on production
ELMAH works on local machine, but not on production
Elmah, convert to .Net4 vs2010, run on server 2008, does not work
Cannot open database "test" requested by the login. The login failed. Login failed for user 'xyz\ASPNET'
The error "Login failed for user 'NT AUTHORITY\IUSR'" in ASP.NET and SQL Server 2008

我的 ASP.NET MVC 应用程序使用一个 SQL Server 数据库,而 ELMAH 使用另一个。在测试服务器上,IIS 应用程序池帐户用于按预期连接到 SQL Server,并且一切正常。但是,使用相同设置转移到生产环境使 Entity Framework 继续使用 IIS APPPOOL\Product Windows 帐户连接到 SQL Server,但 ELMAH 开始尝试使用 DOMAIN\MACHINENAME$ 帐户(我没有创建/设置 - 我没有对 Windows 域有足够的了解以了解它的来源)。

尝试转到列出错误的 ELMAH 页面(即 http://localhost/elmah )返回 HTTP 500 并且事件日志显示以下经典错误消息:

Cannot open database "Errors" requested by the login. The login failed. Login failed for user 'DOMAIN\MACHINENAME$'



出于绝望,我尝试只授予 DOMAIN\MACHINENAME$ 数据库权限(使用 SSMS 将登录映射到 Errors 数据库并选择 db_datawriterdb_datareader ),包括建议的存储过程 here ,但即使这样也不起作用。这个过程就是我在测试服务器上设置它所做的。

生产环境是运行 IIS 8.5 的 Windows Server 2012 R2。测试是运行 IIS 10 的 Windows 10。目前两者都运行 SQL Server 2016 Express v13。

Web.config 包含所有与此稍微相关的内容:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
<section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
<section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
</sectionGroup>
</configSections>
<connectionStrings>
<clear />
<!-- Entity Framework connection, works fine on both servers -->
<add name="DbContext" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Data.mdf;Initial Catalog=Data;Integrated Security=True" providerName="System.Data.SqlClient" />
<!-- ELMAH connection, only works on test server -->
<add name="ElmahLog" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Errors.mdf;Initial Catalog=Errors;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="elmah.mvc.disableHandler" value="false" />
<add key="elmah.mvc.disableHandleErrorFilter" value="false" />
<add key="elmah.mvc.requiresAuthentication" value="true" />
<add key="elmah.mvc.IgnoreDefaultRoute" value="true" />
<add key="elmah.mvc.allowedRoles" value="Developer" />
<add key="elmah.mvc.route" value="dev/elmah" />
<add key="elmah.mvc.UserAuthCaseSensitive" value="true" />
</appSettings>
<system.web>
<globalization culture="en-US" />
<authentication mode="Windows" />
<compilation debug="false" targetFramework="4.5.2">
<assemblies>
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
<httpRuntime targetFramework="4.5.2" />
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
<customErrors mode="Off" />
</system.web>
<system.webServer>
<modules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
</modules>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<elmah>
<security allowRemoteAccess="true" />
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ElmahLog" />
</elmah>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers>
</system.codedom>
</configuration>

为什么 ELMAH 使用不同的帐户,为什么我不能授予该帐户权限?

最佳答案

听起来您的机器 SID 在开发和部署之间发生了变化。您是否将机器加入域?

或者,您将客户端从非域计算机移动到加入域的计算机?

重新安装以更正问题意味着本地或域的 SID 不正确。

关于asp.net - ELMAH 无法登录生产环境中的数据库,但无法登录测试服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53659926/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com