Ehi*_*oze 0 c# asp.net-roles asp.net-identity
在我的startup.cs类中,我检查它是否是DEV环境,并且在我的appsettings.json和appsettings.development.json文件中有很多键值对。
但是我想封装一些仅在 DEV 环境中运行的代码,并且当部署到 UAT、TEST 或 LIVE 时,不会部署代码。
如何才能实现这一目标?
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseMigrationsEndPoint();
}
else
{
app.UseHsts();
}
Run Code Online (Sandbox Code Playgroud)
并有一个类,因为这是我的类中的一个值,用于获取子域运行的 URL(这也是我的 IDENTITY 数据库中的角色的值)
private string SubDomain(HttpContext httpContext)
{
HttpRequest request = httpContext.Request;
string url = request.Headers["Host"];
string subDomainUrl = url.Replace("https://", "").Split('/')[0];
Run Code Online (Sandbox Code Playgroud)
//我希望能够基于 http://localhost:44312/?role=adminUsers 获取我的域 //因此,如果它在本地主机上运行并且角色是管理员用户,则这只会在本地执行,作为远程 URL有http://adminusers.mydomain.com
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<InjectMyClassHere>(); //My class or interface goes here
Run Code Online (Sandbox Code Playgroud)
我希望这一点很清楚。我怎样才能实现这个目标?即让此类仅在 DEV 中执行,而不部署在 UAT、TEST 或 LIVE 环境中
如果您只需要在开发环境中包含代码
#if DEBUG
//code here
#endif
Run Code Online (Sandbox Code Playgroud)
那么,当调试模式(位于 VS 顶部)处于活动状态时,该代码将仅存在于编译后的代码中。当编译在发布模式下运行时,编译器会从字面上剪切并丢弃指令之间的任何代码 - 就像您在构建之前突出显示它并按删除键一样
Visual Studio 通过点亮/灰显处于/不活动的代码来帮助您,因为:
看到顶部设置了【调试】模式并且代码亮起:
现在看到[Release]模式设置在顶部。代码是灰色的,因为它已从编译中删除。另请注意,现在出现编译错误,因为 OnlyDebug 不存在:
如果你的 VS 没有这样的行为,请检查项目属性。发布模式喊“不要定义 DEBUG 常量”,而调试模式应该定义 DEBUG 常量:
当部署到生产环境时,您的代码当然不应该使用调试构建模式来解决这个问题。
脚注:您也可以放置#else,或者您可以使用#if !DEBUG提供“这个或那个”和“非调试”代码:
| 归档时间: |
|
| 查看次数: |
1266 次 |
| 最近记录: |