据我所知,您无法从客户端站点(javascript 等)获取 web.config 信息。因此,您无法从角度查看 web.config 以获取 url。
如果您想要一个可以以角度引用的 URL 对象/列表 - 比如您的 $ressource url - 并且 URL 需要存储在代码隐藏中,无论是在 web.config 还是代码中,那么我建议创建一个返回一个处理程序角度常数与从它设置的值。
解决方案1(服务器端)
这是一个例子:
namespace App.Handlers
{
public class ApiUrls : IHttpHandler
{
public class UrlItems
{
// Properties here doesn't need to be const. They can be taken from the web.config it you want to
public string GetUsers = "http://localhost:2211/projectname/users/getusers";
public string AddUser = "http://localhost:2211/projectname/users/add";
public string UpdateUser = "http://localhost:2211/projectname/users/update";
}
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/javascript";
var serializer = new JavaScriptSerializer();
var script = string.Format(@"
(function() {{
'use strict';
angular
.module('YOUR_MODULE_NAME_HERE')
.constant('ApiUrls', {0});
}})();
",
serializer.Serialize(new UrlItems()));
context.Response.Write(script);
}
}
}
然后 web.config 中的一些代码可以将文件包含在您的 html 文件中:
<system.webServer>
<handlers>
<add path="/js/ApiUrls.js" name="App.Handlers.ApiUrls" type="App.Handlers.ApiUrls, App, Version=1.0.0.0, Culture=neutral" verb="GET" />
</handlers>
</system.webServer>
然后,您可以将该常量注入您的控制器、服务、工厂等,并从中获取值:
angular
.module('YOUR_MODULE_NAME_HERE')
.controller('UserController', ['ApiUrls', function(ApiUrls) {
var getUsers = $resource(ApiUrls.GetUsers,
{
id: viewModel.user.Id
});
}]);
解决方案 2(仅客户端)
或者更简单,如果您只想要 url 列表但不关心它们是存储在代码隐藏还是客户端,那么只需添加角度常量并将其包含在您的 html 中并忘记处理程序。然后只需创建一个包含如下内容的 js 文件。
(function() {
'use strict';
angular
.module('YOUR_MODULE_NAME_HERE')
.constant('ApiUrls', {
GetUsers: "http://localhost:2211/projectname/users/getusers",
AddUser: "http://localhost:2211/projectname/users/add",
UpdateUser: "http://localhost:2211/projectname/users/update"
});
})();
然后将该文件包含在您的 html 文件中
<script src="/StaticFiles/ApiUrls.js"></script>
请记住,如果您将代码中的属性名称更改为其他名称,那么您仍然需要将其更改为 angular。
我希望我能提供帮助:)