C# 基于Web.config appSettings设置API URL
所以我继承了一个angular应用程序,它将API url定义为一个常量变量,并且可以正常工作。然而,这也有它的缺点,因为当我想要指向部署API、测试API和开发API时,我必须更改变量值 是否有方法访问我的web.config文件以读取appSettings并返回API URL?(我使用XML转换应用了不同的API URL)C# 基于Web.config appSettings设置API URL,c#,.net,angularjs,api,C#,.net,Angularjs,Api,所以我继承了一个angular应用程序,它将API url定义为一个常量变量,并且可以正常工作。然而,这也有它的缺点,因为当我想要指向部署API、测试API和开发API时,我必须更改变量值 是否有方法访问我的web.config文件以读取appSettings并返回API URL?(我使用XML转换应用了不同的API URL) 我已经实现了一个从web项目访问API控制器并以这种方式返回值的解决方案,但我不确定这是否是正确的方法。您可以将web.config中的值序列化为JSON,并将它们添加到
我已经实现了一个从web项目访问API控制器并以这种方式返回值的解决方案,但我不确定这是否是正确的方法。您可以将web.config中的值序列化为JSON,并将它们添加到JavaScript可以读取和解析的
元素中
这是我能想到的最简化的例子。您可能希望更好地封装如何从服务器代码编写此代码以及如何从JavaScript读取此代码(并提供更好的名称)
首先,在web.config中,定义包含要传递给JavaScript的键/值对的部分:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="jsConfigurationValues"
type="System.Configuration.NameValueSectionHandler" />
</configSections>
<jsConfigurationValues>
<add key="someValue" value="a" />
<add key="apiUrl" value="http://theurl" />
</jsConfigurationValues>
<!-- the rest of your web.config -->
</configuration>
现在可以访问:
var apiUrl = mySettings.apiUrl;
不过,这里缺少了一部分,这就是将该值导入到角度中的角度化方法。也许你最好从一个相对URL调用一个API来获取剩余的一组特定于环境的绝对URL,并让浏览器缓存它。感谢Scott的响应,我将尝试使用此解决方案,希望我能解决我的问题。
<script type="application/json" id="mySettings">
<% =JavascriptConfigurationValues() %>
</script>
var mySettings = JSON.parse(document.getElementById("mySettings").textContent);
var apiUrl = mySettings.apiUrl;