对于c#–如何为dev/stage/production维护单独的web服务感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍c#descryptoserviceprovider,并为您提供关于a
对于c# – 如何为dev / stage / production维护单独的web服务感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍c# descryptoserviceprovider,并为您提供关于asp.net core 环境(Development、Staging 、Production)、asp.net core 系列 9 环境(Development、Staging 、Production)、Azure API Management(2)创建 Product/User/Subscription/ 体验 Developer Portal、Chrome DevTools无法访问React Production Build的有用信息。
本文目录一览:- c# – 如何为dev / stage / production维护单独的web服务(c# descryptoserviceprovider)
- asp.net core 环境(Development、Staging 、Production)
- asp.net core 系列 9 环境(Development、Staging 、Production)
- Azure API Management(2)创建 Product/User/Subscription/ 体验 Developer Portal
- Chrome DevTools无法访问React Production Build
c# – 如何为dev / stage / production维护单独的web服务(c# descryptoserviceprovider)
解决方法
总而言之,请确保您解决这些潜在问题:
如果Web服务对应用程序执行任何特别重要的操作,您可能希望将应用程序与每个环境中的Web服务结合(即在每个环境中都有一个应用程序版本).当然,当您这样做时,对界面的任何更改都会更容易.
确保您正在与哪个版本的Web服务进行对话.
asp.net core 环境(Development、Staging 、Production)
一.在asp.net core中使用多个环境
ASP.NET Core 配置是基于运行时环境, 使用环境变量。ASP.NET Core 在应用启动时读取环境变量ASPNETCORE_ENVIRONMENT,并将该值存储在 IHostingEnvironment.EnvironmentName 中。ASPNETCORE_ENVIRONMENT 可设置为任意值,但框架支持三个值:Development、Staging 和 Production。 如果发布项目未设置 ASPNETCORE_ENVIRONMENT,则默认为 Production (本机vs中项目Properties\launchSettings.json中environmentVariables默认设置的是Development,如果禁用environmentVariables,那默认则为Production)。
下面是Startup. Configure中的默认实现,本机默认配置的是Development环境。
1.1 Development 模式
开发环境可以启用不应该在生产中公开的功能, 例如ASP.NET Core 模板在开发环境中启用了开发人员异常页(app.UseDeveloperExceptionPage())。当出现异常时,显示错误页信息如下图所示:
本地计算机开发环境可以在项目的 Properties\launchSettings.json 文件中设置。 在 launchSettings.json 中设置的环境值替代在系统环境中设置的值。新建的mvc项目默认配置如下:
launchSettings.json 中的 applicationUrl 属性可指定服务器 URL 的列表。 在列表中的 URL 之间使用分号。注意:launchSettings.json只用于本机在vs 中开发使用,在开发中可以选择三种之中任意一种的环境模式。当项目发布后,发布后(iis做反向代理),发布的文件中并不会有launchSettings.json文件。
如果不用vs来启动应用程序,使用 dotnet run 命令来 启动应用程序时,使用具有 "commandName": "Project" 的第一个配置文件。 commandName 的值指定要启动的 Web 服务器。 commandName 可为以下任一项:IIS Express、IIS、Project(启动 Kestrel 的项目)。
当使用dotnet run 启动应用时:1会读取 launchSettings.json中的environmentVariables;2是会显示打印出host 环境。
1.2 Production 模式
Production 环境应配置为最大限度地提高安全性、性能和应用可靠性。 不同于开发环境的一些通用设置包括:
(1) 缓存
(2) 客户端资源被捆绑和缩小,并可能从 CDN (网络分发)提供。
(3) 已禁用诊断错误页。
(4) 已启用友好错误页。
(5) 已启用生产记录和监视。
二. 环境设置
在项目中为测试设置特定环境通常很有用。 如果未设置环境,默认值为 Production
,这会禁用大多数调试功能。设置环境的方法取决于操作系统。例如将asp.net core razor项目发布后,部署到IIS上,访问OtherPages/page1时出现异常。此时默认是Production
环境变量,会
显示了error页面信息, 表示已启用友好错误页。如下图所示 :
2.1 修改环境变量
上面讲到,设置环境的方法取决于操作系统:有Azure 应用服务、Windows、macOS、Linux等。每种操作系统上设置环境变量的方法不同,这里不在介绍,具体参考文档。这里就先只介绍在Windows操作系统上以iis做反向代理的配置环境变量。
在Windows操作系统上配置环境变量方法有很多。当发布后,文件中有一个web.config。这里就介绍下在web.config中设置 ASPNETCORE_ENVIRONMENT
环境变量。使用 web.config 设置 ASPNETCORE_ENVIRONMENT
环境变量后,它的值会替代系统级设置。
<aspNetCore processPath="dotnet" arguments=".\MyNetCoreStudy.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess"> <environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
此时iis上该项目就是Development开发环境了,再次访问OtherPages/page1时出现异常,此时会捕获同步和异步系统。管道中的异常实例,并生成HTML错误响应。详细异常信息如下图所示:
三. 发布到IIS上步骤
下面简单讲下发布到IIS上的步骤实现:
(1) 安装好IIS,网上很多参考资料。
(2)下载dotnet-hosting-2.2.1-win.exe 用于在iis上处理对web服务器的请求。下载地址介绍:
https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/index?view=aspnetcore-2.2#install-the-net-core-hosting-bundle
在里面找到“当前 .NET Core 托管捆绑包安装程序(直接下载)”这里进去可以下载到当前版本(aspnetcore-2.2),安装后,在iis模块中能看到AspNetCoreModuleV2。对应发布项目中web.config的<handlers>处理。
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
(3) 在vs中右击项目发布,选择"iis Ftp" 点击发布。 选择“文件系统”, 目标位置可以选择当前电脑位置如: D:\DonetCoreStudy\IIS
(4) 在iis这边,添加网站
(5) 在应用程序池中对项目(MyNetCoreStudy) 选择无托管代码。
这样发布到iis上就成功了。
四. 基于环境的 Startup 类
最后在讲下Startup 类约定。当 ASP.NET Core 应用启动时,会启动Startup类。 应用程序可以为不同的环境,单独定义 Startup 类。可以定义例如: StartupDevelopment类、StartupProduction类,Startup类。当程序运行时会选择相应的 Startup 类。 程序会优先考虑名称后缀与当前环境相匹配的类。如果是Developmen环境则程序进入StartupDevelopment类,如果是Production环境则程序进入StartupProduction类。如果找不到匹配的 Startup{EnvironmentName},就会使用 Startup 类。
基于环境的 Startup 类实现代码如下:
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

本文分享自微信公众号 - dotNET跨平台(opendotnet)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
asp.net core 系列 9 环境(Development、Staging 、Production)
原文: asp.net core 系列 9 环境(Development、Staging 、Production)一.在asp.net core中使用多个环境
ASP.NET Core 配置是基于运行时环境, 使用环境变量。ASP.NET Core 在应用启动时读取环境变量ASPNETCORE_ENVIRONMENT,并将该值存储在 IHostingEnvironment.EnvironmentName 中。ASPNETCORE_ENVIRONMENT 可设置为任意值,但框架支持三个值:Development、Staging 和 Production。 如果发布项目未设置 ASPNETCORE_ENVIRONMENT,则默认为 Production (本机vs中项目Properties\launchSettings.json中environmentVariables默认设置的是Development,如果禁用environmentVariables,那默认则为Production)。
下面是Startup. Configure中的默认实现,本机默认配置的是Development环境。
//如果是Development环境
if (env.IsDevelopment())
{
//当捕获同步和异步系统。管道中的异常实例,并生成HTML错误响应。
app.UseDeveloperExceptionPage();
}
else
{
//如果不是Development环境,向管道中添加一个中间件,用于捕获异常、记录异常并进行重置
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
1.1 Development 模式
开发环境可以启用不应该在生产中公开的功能, 例如ASP.NET Core 模板在开发环境中启用了开发人员异常页(app.UseDeveloperExceptionPage())。当出现异常时,显示错误页信息如下图所示:
本地计算机开发环境可以在项目的 Properties\launchSettings.json 文件中设置。 在 launchSettings.json 中设置的环境值替代在系统环境中设置的值。新建的mvc项目默认配置如下:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:30081",
"sslPort": 44349
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"MyNetCoreStudy_MVC": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
launchSettings.json 中的 applicationUrl 属性可指定服务器 URL 的列表。 在列表中的 URL 之间使用分号。注意:launchSettings.json只用于本机在vs 中开发使用,在开发中可以选择三种之中任意一种的环境模式。当项目发布后,发布后(iis做反向代理),发布的文件中并不会有launchSettings.json文件。
如果不用vs来启动应用程序,使用 dotnet run 命令来 启动应用程序时,使用具有 "commandName": "Project" 的第一个配置文件。 commandName 的值指定要启动的 Web 服务器。 commandName 可为以下任一项:IIS Express、IIS、Project(启动 Kestrel 的项目)。
当使用dotnet run 启动应用时:1会读取 launchSettings.json中的environmentVariables;2是会显示打印出host 环境。
1.2 Production 模式
Production 环境应配置为最大限度地提高安全性、性能和应用可靠性。 不同于开发环境的一些通用设置包括:
(1) 缓存
(2) 客户端资源被捆绑和缩小,并可能从 CDN (网络分发)提供。
(3) 已禁用诊断错误页。
(4) 已启用友好错误页。
(5) 已启用生产记录和监视。
二. 环境设置
在项目中为测试设置特定环境通常很有用。 如果未设置环境,默认值为 Production
,这会禁用大多数调试功能。设置环境的方法取决于操作系统。例如将asp.net core razor项目发布后,部署到IIS上,访问OtherPages/page1时出现异常。此时默认是Production
环境变量,会
显示了error页面信息, 表示已启用友好错误页。如下图所示 :
2.1 修改环境变量
上面讲到,设置环境的方法取决于操作系统:有Azure 应用服务、Windows、macOS、Linux等。每种操作系统上设置环境变量的方法不同,这里不在介绍,具体参考文档。这里就先只介绍在Windows操作系统上以iis做反向代理的配置环境变量。
在Windows操作系统上配置环境变量方法有很多。当发布后,文件中有一个web.config。这里就介绍下在web.config中设置 ASPNETCORE_ENVIRONMENT
环境变量。使用 web.config 设置 ASPNETCORE_ENVIRONMENT
环境变量后,它的值会替代系统级设置。
<aspNetCore processPath="dotnet" arguments=".\MyNetCoreStudy.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
此时iis上该项目就是Development开发环境了,再次访问OtherPages/page1时出现异常,此时会捕获同步和异步系统。管道中的异常实例,并生成HTML错误响应。详细异常信息如下图所示:
三. 发布到IIS上步骤
下面简单讲下发布到IIS上的步骤实现:
(1) 安装好IIS,网上很多参考资料。
(2)下载dotnet-hosting-2.2.1-win.exe 用于在iis上处理对web服务器的请求。下载地址介绍:
https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/index?view=aspnetcore-2.2#install-the-net-core-hosting-bundle
在里面找到“当前 .NET Core 托管捆绑包安装程序(直接下载)”这里进去可以下载到当前版本(aspnetcore-2.2),安装后,在iis模块中能看到AspNetCoreModuleV2。对应发布项目中web.config的<handlers>处理。
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
(3) 在vs中右击项目发布,选择"iis Ftp" 点击发布。 选择“文件系统”, 目标位置可以选择当前电脑位置如: D:\DonetCoreStudy\IIS
(4) 在iis这边,添加网站
(5) 在应用程序池中对项目(MyNetCoreStudy) 选择无托管代码。
这样发布到iis上就成功了。
四. 基于环境的 Startup 类
最后在讲下Startup 类约定。当 ASP.NET Core 应用启动时,会启动Startup类。 应用程序可以为不同的环境,单独定义 Startup 类。可以定义例如: StartupDevelopment类、StartupProduction类,Startup类。当程序运行时会选择相应的 Startup 类。 程序会优先考虑名称后缀与当前环境相匹配的类。如果是Developmen环境则程序进入StartupDevelopment类,如果是Production环境则程序进入StartupProduction类。如果找不到匹配的 Startup{EnvironmentName},就会使用 Startup 类。
基于环境的 Startup 类实现代码如下:
public class StartupDevelopment
{
public void ConfigureServices(IServiceCollection services)
{
// ...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// ...
}
}
// Startup class to use in the Production environment
public class StartupProduction
{
public void ConfigureServices(IServiceCollection services)
{
//...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// ...
}
}
// Fallback Startup class
// Selected if the environment doesn''t match a Startup{EnvironmentName} class
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
//...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//...
}
}
/// <summary>
/// 根据环境变量,动态加载Startup的程序集类
/// </summary>
/// <param name="args"></param>
/// <returns></returns>
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
var assemblyName = typeof(Startup).GetTypeInfo().Assembly.FullName;
return WebHost.CreateDefaultBuilder(args)
.UseStartup(assemblyName);
}
参考文献
官方资料:asp.net core 环境
Azure API Management(2)创建 Product/User/Subscription/ 体验 Developer Portal
本文介绍如下内容:
管理员(也就是 API 的提供者)从 Azure Portal 导入后端 API
管理员在 Azure Portal 对导入的 API 进行设置,比如增加流控等功能
管理员在 Azure Portal 创建一个包含一组或多组 API 的产品并发布
管理员在 Azure Portal 发布开发人员门户(通常该步骤仅执行一次)
用户从开发人员门户自主注册或者从管理员从 Azure Portal 上注册用户
管理员从 Azure 门户上为用户创建订阅
用户在开发人员门户学习如何调用 API 并做测试
用户在自己的业务系统中调用 API
视频介绍:
https://www.51azure.cloud/post/2020/8/7/azure-api-management-2-create-product-user-subscription-and-try-developer-portal
图文介绍:
几个重要的概念:
1. API
导入或者在 Azure Portal 上创建的 一组 API 或者多组 API,例如导入了一组订单相关 API 和一组库存相关 API;
2. 产品
产品包含至少一组 API,通常产品把多组 API 打包在一起,形成一个包含多种功能的一个集合,例如:定义了一个产品 “进销存”,该产品包含一组 订单相关的 API 和一组库存相关的 API;
3. 用户
这里的用户通常指使用 API Management 的人员,其中包含要调用你发布的 API 的开发人员。
4. 组
组指的用户组,一个组可以包含多个成员,也就是包含多个 “用户”,系统内置了 “Administrator”,“Developer”,“Guests” 三个组。
5. 订阅
订阅决定了哪个” 用户 “可以调用哪个 “API” 或者哪个 “产品”。
订阅是绑定到 “用户” 上的,订阅能控制某个 API 或某个产品。
6. 开发人员门户(developer portal)
通常情况下,开发人员门户是提供给 “用户”,也就是要调用你 API 的人员使用的一个门户网站。
用户可以在这个网站维护自己的账号信息,查看自己的订阅信息,查看 API 文档 / 在线测试 API。
默认情况下,他的 url 后半部分为:developer.azure-api.net;
可以在开发人员门户上提交注册信息,根据配置,可能需要审核或自动完成审核,然后便成了 “用户”,用户可以根据 API 及产品是否需要订阅或者订阅权限调用对应的 API。
在开发人员门户上自主注册的用户,默认自动分配到 “Developer” 组中。
通常整体的使用流程是:
管理员(也就是 API 的提供者)从 Azure Portal 导入后端 API
管理员在 Azure Portal 对导入的 API 进行设置,比如增加流控等功能
管理员在 Azure Portal 创建一个包含一组或多组 API 的产品并发布
管理员在 Azure Portal 发布开发人员门户(通常该步骤仅执行一次)
用户从开发人员门户自主注册或者从管理员从 Azure Portal 上注册用户
管理员从 Azure 门户上为用户创建订阅
用户在开发人员门户学习如何调用 API 并做测试
用户在自己的业务系统中调用 API
1. 管理员(也就是 API 的提供者)从 Azure Portal 导入后端 API
上一讲分享的内容中,我们已经完成了 API 的导入,本文不再赘述,如果您尚未完成 API 导入,请参照《Azure API Management(1)Create APIM And Add First API, 创建 Azure APIM 并添加后端 API》
2. 管理员在 Azure Portal 对导入的 API 进行设置,比如增加流控等功能
流控等功能我们在以后的章节中介绍,本文可以跳过这个步骤。
3. 管理员在 Azure Portal 创建一个包含一组或多组 API 的产品并发布
注意:
3 处的状态为 “未发布”,未发布的产品不会在开发者门户中看到。稍后需要执行” 发布产品 “操作后,才会出现在开发者门户中;
3 处的 “需要订阅” 如果不勾选,则用户在开发者门户中无需订阅即可进行该产品关联 api 的调用;
5 处的 API 可以选择多个或者一个;
产品创建完成后,默认的访问控制组在 “Administrator” 中,如果需要被 “开发者么户” 中创建的用户访问,则需要添加 “developers” 组,因为从门户自主注册的用户,默认为 “developers” 组:
发布产品,只有发布后的产品,才会显示在开发人员门户中:
&n.........
Chrome DevTools无法访问React Production Build
如何解决Chrome DevTools无法访问React Production Build?
我正在尝试调试React应用程序,但是一旦构建它,就无法通过Chrome DevTools控制台访问变量。
例如,我有这个组件:
function TestComponent() {
[pageState,setPageState] = useState({});
debugger;
return <div>Test</div>;
}
当Chrome在调试器断点处停止时,使用react start
命令,我可以正确访问该变量。
但是在我react build
和serve -s build
之后,该变量将不存在。
未捕获的ReferenceError:未定义pageState
该应用程序正常运行。
我该如何解决?这是由于缩小或移栽造成的?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
关于c# – 如何为dev / stage / production维护单独的web服务和c# descryptoserviceprovider的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于asp.net core 环境(Development、Staging 、Production)、asp.net core 系列 9 环境(Development、Staging 、Production)、Azure API Management(2)创建 Product/User/Subscription/ 体验 Developer Portal、Chrome DevTools无法访问React Production Build等相关内容,可以在本站寻找。
本文标签: