azure 内容相同,但服务方式因子域而异

yvgpqqbh  于 2023-02-25  发布在  其他
关注(0)|答案(1)|浏览(145)

使用Azure、C#和.Net,是否有可能在提供相同页面(如index.html)的同时更改页面的某些内容?
这是为个人,例如理发师,他们有基本相同的网页内容。网页上的内容会改变,以反映网页上显示的名称和电子邮件。
因此,例如,maria.wonderhair.com将显示与www.example.com相同的文本stefanie.wonderhair.com,唯一的更改将是基于子域的一些元素,如标题页和理发师的姓名。
它还可以包含一些基于域名的其他动态内容,如电话和电子邮件。这些数据也应该存储在Azure中,作为一个简单的NoSQL数据库。
是否有可能做到这一点,而无需为每个站点/个人配置DNS条目?

jchrr9hc

jchrr9hc1#

多亏了Hussein Al Kazwini,MSDoc才能将DNS配置为使用wildcard subdomain
使用Azure和. Net,可以根据子域提供具有一些动态更改的相同页面。
一种方法是使用Azure Functions和Azure Cosmos DB。
你可以创建一个Azure函数来接收HTTP请求并从请求URL中提取子域。基于子域,该函数可以从Cosmos DB中检索理发师的姓名、电子邮件、电话号码和其他动态内容。
然后,函数可以使用这些数据生成一个响应,其中包含相同的页面内容和一些动态更改。您可以使用模板引擎(如Razor或Handlebars)来使内容动态化并易于配置。
为了避免需要为每个站点/个人配置DNS条目,你可以使用通配符DNS将所有子域路由到同一终结点。这意味着www.example.com域下的任何子域wonderhair.com都将定向到同一Azure功能。
设置Cosmos DB示例以存储美发师数据。你可以使用Azure门户或Azure CLI创建数据库、容器和项。
1.创建一个名为“hairdressers”的容器,其中包含每个理发师的项目,包括他们的姓名、电子邮件和电话号码。
1.创建Azure函数以处理HTTP请求。你可以使用Azure门户或Visual Studio创建具有HTTP触发器的新Azure函数项目。该函数应从请求URL提取子域,并使用它从Cosmos DB检索美发师的数据。
使用C#从请求URL中提取子域。

string subdomain = req.Headers["Host"].ToString().Split('.')[0];

使用模板引擎生成页面的HTML。可以使用Razor、手柄或其他模板引擎使内容动态化。

<html>
<head>
    <title>@Model.Name - Wonder Hair</title>
</head>
<body>
    <h1>Welcome to @Model.Name's Wonder Hair salon!</h1>
    <p>Email: @Model.Email</p>
    <p>Phone: @Model.Phone</p>
</body>
</html>

一旦获得理发师数据和生成的HTML,就可以将其作为HTTP请求的响应返回。

return new ContentResult {
    ContentType = "text/html",
    Content = generatedHtml
};

将DNS配置为使用通配符子域。你可以将wonderhair.com域的DNS配置为使用通配符子域,如 *. wonderhair.com。这会将所有子域路由到同一Azure功能,从而允许你提供基于子域动态更改的相同内容。

相关问题