He codificado en StartUp.cs el siguiente código para llamar a mi API.
services.AddHttpClient("MyApi", c => { #if DEBUG c.BaseAddress = new Uri("https://localhost:12345"); #else c.BaseAddress = new Uri("https://myApi.com"); #endifPero cuando quiero llamar a ActionResult usando una llamada Ajax, no puede encontrar la API.
alert(apiUrl); $.ajax({ url: apiUrl + '/MyApiProcesses/GetSomething', type: 'POST',Así que he escrito esta variable en un archivo js.
var apiUrl = 'https://localhost:12345'; //var apiUrl = 'https://myApi.com';Quiero saber si es posible escribirlo dinámicamente. Si lo declaras en el inicio, ¿no tienes que declararlo dos veces?
Si necesita usar direcciones URL en ajax o httpclient, generalmente lo hago de esta manera, pero se necesitan varios pasos para obtener una cadena de configuración de aplicaciones.
"AppUrl": { "DevUrl": "http//..", "ProductUrl": "http//..", .... another urls if needed },2.Crear clase para esta sección
public class AppUrlSettings { public string DevUrl{ get; set; } public string ProdUrl{ get; set; } ....another urls } var appUrlSection=Configuration.GetSection("AppUrl"); services.Configure<AppUrlSettings>(appUrlSection); var urls = appUrlSection.Get<AppUrlSettings>(); services.AddHttpClient("MyApi", c => { #if DEBUG c.BaseAddress = new Uri(urls.DevUrl); #else c.BaseAddress = new Uri(urls.ProdUrl; #endif }); public class MyController:Controller { private readonly IOptions<AppUrlSettings> _appUrls; public MyController (IOptions<AppUrlSettings> appUrls) { _appUrls = appUrls; } public IActionResult MyAction() { var model= new Model { DevUrl=_appUrls.Value.DevUrl; ... } } }luego puede usar direcciones URL como campos ocultos.
o puede obtener direcciones URL del modelo en javascript directamente:
var devUrl = @Html.Raw(Json.Encode(@Model.DevUrl)); .....O si necesita las URL en muchos lugares, puede tener sentido crear un servicio especial que pueda inyectar directamente en las vistas que necesita.