gpt4 book ai didi

asp.net - 如何在开发过程中管理来自子域的静态内容服务

转载 作者:行者123 更新时间:2023-12-02 02:21:21 26 4
gpt4 key购买 nike

我想从生产中的子域开始提供我的静态内容。在 Visual Studio 中保持流畅的开发体验的同时,最好的方法是什么?到目前为止,我不必担心 URL,我会简单地使用:

<script src="@Url.Content("~/Scripts/jquery.someScript.js")" type="text/javascript"></script>

当我在本地时,它会自动映射到 http://localhost/myApp/Scripts/jquery.someScript.js当我投入生产时,它会自动映射到 http://www.myDomain.com/Scripts/jquery.someScript.js .我不需要做任何事情来管理 URL。

我的第一直觉是在我的 web.config 中使用一些 AppSettings 并指定 HostName 和 StaticHostName 但这会破坏我对 Url.Content 的使用。

解决此问题的最佳做法是什么?

最佳答案

在某个地方,您将需要使用配置设置来指示您在给定环境中需要的行为(我想您可以使用 IsDebuggingEnabled 属性,但自定义配置设置更灵活)。

我可以想到两种可能的技术。

选项 1

您可以为提取相关配置设置的 UrlHelper 编写自己的扩展方法。然后,您的 View 代码将与配置知识隔离开来,例如:

<script src="@Url.StaticContent("~/Scripts/jquery.someScript.js")" type="text/javascript"></script>

这是一个示例实现(未经测试):

public static class UrlHelperExtensions
{
public static string StaticContent(this UrlHelper urlHelper, string contentPath)
{
if (!VirtualPathUtility.IsAppRelative(contentPath))
{
throw new ArgumentException("Only use app relative paths");
}

// TODO: Further checks required - e.g. the path "~" passes the above test

if (UseRemoteServer)
{
// Remove the initial "~/" from the content path
contentPath = contentPath.Substring(2);
return VirtualPathUtility.Combine(RemoteServer, contentPath);
}

return urlHelper.Content(contentPath);
}

private static string RemoteServer
{
get
{
// TODO: Determine based on configuration/context etc
return null;
}
}

private static bool UseRemoteServer
{
get
{
return !string.IsNullOrWhiteSpace(RemoteServer);
}
}
}

选项 2

另一种方法可能是使用类似 Combres 的东西但通过转换 Combres 的 XML 配置文件来修改每个环境的配置。

关于asp.net - 如何在开发过程中管理来自子域的静态内容服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8031140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com