如何从TypeScript中的web.config获取密钥?

use*_*573 5 web-config key typescript

如何从API项目中的web.config获取密钥到我的TypeScript UI项目中?我已经尝试了以下但没有任何东西可以访问我可以告诉的配置文件:

 apiUrl: string = '@System.Configuration.ConfigurationManager.AppSettings["ApiUrl"]';
Run Code Online (Sandbox Code Playgroud)

这也不起作用:

 apiUrl: string = "@ConfigurationManager.AppSettings['ApiUrl']";
Run Code Online (Sandbox Code Playgroud)

我也尝试了单引号或双引号的每种组合,但无济于事.有关如何从TypeScript中的web.config文件获取值的任何见解?

srs*_*ate 0

尝试从其他程序集/项目访问配置文件通常不是一个好主意,因为它们在编译时通常不会输出到同一目录。

由于 TypeScript 已转换为 JavaScript,因此无论配置文件位于何处,您都无法直接读取它。

如果您想要动态更改服务的 URL(例如从 DEV 端点到 QA 或生产端点),您可以在 HTML/CSHTML 文件中使用Razor 语法从配置文件中获取值,然后注入该值到脚本中,或者您可以在部署期间使用Powershell在构建过程中替换 TypeScript 文件中的值。

# Argument passed into PowerShell script (or write out URL string manually).
$NewURL1 = $args[0];
$NewURL2 = "http://goodURL.com/api";

# *.js files, because your *.ts files will already be transpiled.
$files = gci "C:\MyProject\DropFolder" -recurse -include "exampleWithBadURL.js", "otherFile.js";

Foreach ($file in $files)
{
    $fileContent = Get-Content($file) -Raw;
    attrib $file -r;

    # Perform the replacement.
    $fileContent -replace "http://localhost:38774/", $NewURL1 | Out-File $file;
    $fileContent -replace "http://badURL.com/api/", $NewURL2 | Out-File $file;

    Write-Output($file.FullName);
}
Run Code Online (Sandbox Code Playgroud)

如果您的构建/发布代理允许,您可以在将代码部署到特定环境时运行此 Powershell 脚本。复制文件后,我在发布定义中的VSTS/TFS中使用了类似的脚本。