【问题标题】:How to avoid hard coding URLS如何避免硬编码 URL
【发布时间】:2022-10-31 15:12:50
【问题描述】:

我正在使用 IIS 托管一个 .NET Web api,该 api 具有密码重置功能,可将用户发送到重置密码页面,现在我想知道如何避免对 url 进行硬编码

 private ReturnHandler SendResetPasswordMail(string email, string ott)
    {
        ReturnHandler result = new ReturnHandler();
        List<string> emails = new List<string>();
        emails.Add(email);
        string subject = "Promjena lozinke";
        string link = "http://axatszg-vw0038:13702/#/change-password";
        string[] parameters = { subject, "link za promjenu lozinke:", link + "?token="  + ott};

基本上不是固定“axatszg-vw0038:13702”或“localhost:13702”,我可以以某种方式让我的代码访问主机吗

【问题讨论】:

  • 将其放入配置文件并从那里读取

标签: asp.net .net http iis localhost


【解决方案1】:

在 Web.config 中,您可以将值放入 appSettings tag,例如:

<configuration>
    <appSettings>
        <add key="url" value="yourURL" />
    </appSettings>
</configuration>

然后你可以得到它如下:

string link=System.Configuration.ConfigurationManager.AppSettings["url"];

.netCore 中,您可以在appsettings.json 中定义变量,如下所示:

应用设置.json

{
 "Logging": {
      "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
       }
  },
  "myLinks": {
      "link1": "axatszg-vw0038:13702",
      "link2": "localhost:13702"
   }
}

并使用Dependency InjectionController 中读取此变量:

public class TestController : ControllerBase
{
    private string myLink1 { get; set; }
    private string myLink2 { get; set; }

    public TestController(IConfiguration configuration)
    {
         this.myLink1 = configuration.GetValue<string> ("myLinks:link1");
         this.myLink2 = configuration.GetValue<string> ("myLinks:link2");
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2014-03-07
    • 2018-11-19
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多