当前位置: 首页 > 知识库问答 >
问题:

正则表达式。替换或字符串。替换不适用于Linux环境中的主机URL

西门高歌
2023-03-14

我的安装程序
开发机器:

  • Windows 10
  • IIS express

分期机:

  • Ubuntu 18.04

我的问题我有一个简单但奇怪的问题。在下面的代码块中,我生成了一个电子邮件确认链接。现在,我想用另一个域替换生成的URL的域。

// class fields
        private readonly string _WebServerRelativeUrl = "https://www.specific-domain.com/account/";
        private readonly string _BingoServerRelativeUrl = "https://www.specific-domain.eu/api/v1/identity/";
        private readonly string _BingoLocalServerRelativeUrl = "https://localhost:44375/api/v1/identity/";


// code excerpt from confirm email method
var passwordResetLink = _urlHelper.Action("ResetPassword", "identity",
                new { email = appUser.Email, token, lang }, _httpRequest.HttpContext.Request.Scheme);

            var url = Regex.Replace(passwordResetLink, _BingoServerRelativeUrl, _WebServerRelativeUrl, RegexOptions.IgnoreCase);
            if (_environment.IsDevelopment())
            {
                url = Regex.Replace(passwordResetLink, _BingoLocalServerRelativeUrl, _WebServerRelativeUrl, RegexOptions.IgnoreCase);
            }

在localhost,一切正常。服务器生成一个URL,如下所示:

https://localhost:44375/api/v1/identity/confirmemail?userId=abcd&token=abcd

然后https://localhost:44375/api/v1/identity被成功替换为https://www.specific-domain.com/account/

然而,在生产环境中,该应用程序运行在Ubuntu 18.04上,位于具有特定域的Nginx之后。现在,当应用程序位于Linux虚拟机的生产环境中时,这种字符串替换不起作用。

我还试过绳子。Replace()而不是正则表达式,结果相同。可能是什么问题?

共有1个答案

毕瀚
2023-03-14

调试此问题需要相当长的时间。通过使用Flurl库构建最初所需的URL找到了一个更简单的解决方案。该解决方案需要更少的代码。

var url = WebServerRelativeUrl
    .AppendPathSegment(ResetPassPath)
    .SetQueryParams(new
    {
         email = appUser.Email, token = token, lang = lang
    });

附言:比起UriBuilder,我更喜欢这个,因为它提供了流畅的界面。

 类似资料:
  • 问题内容: 我正在尝试使用正则表达式替换字符串中所有出现的英国汽车登记信息。 当字符串与以下正则表达式完全匹配时,以下swift代码可完美地用于a。 结果是 但是,以下操作无效,并且字符串未修改 结果是 谁能给我任何指示? 问题答案: 您需要删除和锚点。 该装置 开始字符串 和手段 结束字符串 (或行,这取决于选项)。这就是第一个示例起作用的原因:在第一个测试字符串中,字符串的开头实际上是您的模式

  • 我想使用Gson将字符串转换为Foo对象: 下面是我的正则表达式: 如何使用此正则表达式将所有,.和替换为,,而不更改JSON中的键和值?

  • 本文向大家介绍正则表达式的字符串替换方法,包括了正则表达式的字符串替换方法的使用技巧和注意事项,需要的朋友参考一下 我有以下几行: d:\Projects\qqq\Development\qqq.MySol1.sln d:\Projects\qqq\qqqDevelopment\qqqMySol2.sln d:\Projects\qqq\Development\MyInstaller.sln d:

  • 我需要替换以下字符串中的引号。 最终输出应该是“这是test()ing和test()ing”; i、 e仅当它以“test()开头,以”结尾时才替换。中间的文本保持不变。 这个坏了。 请为同样的问题推荐合适的正则表达式。

  • 问题内容: 我有以下几种可能的形式的字符串: 我希望能够将它正则化为,基本上替换和之间的所有内容。我试过了: 但这是行不通的。任何帮助表示赞赏。 PS 表示有一个换行符用于此目的。实际上不在那里。 问题答案: 您可以使用 并替换为。请参阅在线Go regex演示。 在这里,匹配并捕获子字符串(它将从替换模式中引用此值),并将匹配并消耗除换行符以外的任何0+字符,直至行尾。 参见Go演示: 输出:

  • 问题内容: 如何在Python中使用正则表达式替换文件中的字符串,因为我想打开一个文件,其中应替换其他字符串的字符串,而我们需要使用Reg表达式(搜索和替换)。有人可以帮助我吗?打开文件并将其与搜索和替换方法一起使用的一些示例 问题答案: