我按照 this article 将我的 ASP.NET MVC Core 1.0 应用程序部署到使用 IIS 10 的 Windows 10 上的本地 IIS。该应用程序已成功部署,并且可以正常打开主页。我正在使用个人用户帐户身份验证。在主页上,当我输入登录名/密码并单击 Login 按钮时,我收到以下错误。我正在使用最新版本的 ASP.NET Core 和 VS2015。我使用 VS2015 发布向导发布应用程序。一切都在同一台机器上完成:
处理您的请求时发生错误。开发模式切换到开发环境将显示有关所发生错误的更详细信息。不应在已部署的应用程序中启用开发环境,因为它可能导致向最终用户显示异常的敏感信息。对于本地调试,可以通过将 ASPNETCORE_ENVIRONMENT 环境变量设置为 Development 并重新启动应用程序来启用开发环境。
首先,检查 ASPNETCORE_ENVIRONMENT
变量的值。您必须将此环境变量设置为“生产”(或开发以外的其他环境)
否则,您可以像这样更新 web.config
-
<configuration>
<!--
Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
-->
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\Application.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</configuration>
有关详细信息,请参阅此 post。
我想在开发环境中运行它,所以我在 web.config 文件中添加了以下内容,它对我有用:
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
https://i.stack.imgur.com/GqIGm.png
如果您正在使用 ASP.NET CORE 进行开发。您可以在属性中找到此设置,然后在 launchSetting.json 文件中找到。
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production"
},
"nativeDebugging": false
},
"Ecommerce": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
将 "ASPNETCORE_ENVIRONMENT": "Development"
更改为 "ASPNETCORE_ENVIRONMENT": "Production"
展开属性可以找到launchSetting.json文件
https://i.stack.imgur.com/g9HtS.png
我遇到了同样的问题(ASP.NET CORE 3.1),但更改“ASPNETCORE_ENVIRONMENT”并没有帮助。
通过网络搜索,我发现在 Startup.cs,Configure 方法中,此代码隐藏了真正的问题。
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
然后我删除了 If 块并添加了数据库错误页面(您可能需要从 NuGet 安装 Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore )
app.UseDatabserrorPages();
所以你的 Startup.cs 看起来像这样
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
app.UseHttpsRedirection();
//Others will be Okay
然后你会在网页上看到真正的错误。对我来说是
Login failed for user IIS APPPOOL\DefaultAppPool
所以我不得不运行一个 GRANT SCRIPT。我只需要在我的 SQL Server 上运行这个脚本
IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
CREATE LOGIN [IIS APPPOOL\DefaultAppPool]
FROM WINDOWS WITH DEFAULT_DATABASE=[master],
DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [WebDatabaseUser]
FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'WebDatabaseUser'
GO
我的问题就解决了。希望这可以帮助某人。
代码中存在运行时异常。在生产模式下无法显示。以便它显示“不应在已部署的应用程序中启用开发环境,因为它可能导致向最终用户显示异常的敏感信息”
在 web.config 文件中你会发现
<aspNetCore processPath="dotnet" arguments=".\PortfolioApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
将其替换为
<aspNetCore processPath=".\Application.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
现在您在浏览器中运行应用程序。它将显示实际的错误消息。现在是时候修复运行时异常了。
我刚刚替换了这个:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseMigrationsEndPoint();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
有了这个:
app.UseDeveloperExceptionPage();
app.UseMigrationsEndPoint();
首先,当您发布一个在运行时引发错误的网站时,会发生此错误。因此,在出现此错误的页面中再次检查您的代码。然后,将 ASPNETCORE_ENVIRONMENT
变量的值设置为 Production
(而不是 Development
),您还应该检查布局页面并将 <environment"development">
更改为 <environment"Production">
。最后,发布您的网站。这是在 VS2017 中测试的
这可能不是每个人的情况,但是我试图将“发布”配置部署到具有“uat”环境变量的服务器。我设置了一个 uat 配置以用于我的部署,并且在导航到我的站点 url 时不再出现该消息。长话短说,只要确保您的预期构建配置与其他人在上面提到的目标服务器相匹配!
我可以摆脱开发模式消息的唯一方法是将 appsettings.json 上下文从 Integrated Security=True 更改为指定 User Id=username;Password=password 并确保用户是 db_owner。
当您的连接字符串不正确时,您会收到此错误。当我更正我的连接字符串时,它工作正常。
例如:对于正确的 azure db 连接字符串
Server={Server Name};Initial Catalog={Database Name};Persist Security Info=False;User ID={DB User Name};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
默认情况下,在生产中,您将看到此错误页面,除非您创建/自定义自己的页面。根据项目类型,它可以位于不同的位置,例如 Pages/Error.razor
或作为控制器操作。
对我来说,只需将 EnvironmentName 属性添加到 pubxml。
这是带有一般错误消息的默认错误页面。
在共享主机上部署 ASP.NET Core 3.1 MC 发布的应用程序后出现此错误。默认主页和隐私页面按预期工作,但是当我尝试打开一个从数据库获取数据的页面时,显示了上述错误。
错误原因:在 appsettings.json 中,我将连接字符串 Data Source=MyPC\MSSQLSERVER14 更新为 Data Source=.\MSSQLSERVER2。我从共享主机连接字符串中复制了这个数据源“.\MSSQLSERVER2”并将其粘贴到 appsettings.json
解决方案:将数据源“.\MSSQLSERVER2”更改为“.\\MSSQLSERVER2”。
"ConnectionStrings": { "AppCon": "Data Source=.\\MSSQLSERVER2xxx;Initial Catalog=sqldb;Persist Security Info=True;User ID=sqluser;Password=********" }
不定期副业成功案例分享
<aspNetCore processPath=".\Application.exe" arguments=""
部分中,1.Application
是项目名称还是原样? 2. arguments 值是否需要为空?