gpt4 book ai didi

c# - WCF REST 服务 : passing country code

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:30 25 4
gpt4 key购买 nike

我有一个 WCF REST 服务,供不同国家/地区使用的移动应用程序使用。它接受和返回 JSON,我使用 StructureMap。

想法是为所有国家/地区创建一个服务实例,但我需要知道哪个国家/地区正在调用该服务,并在服务中对此进行一些逻辑处理(例如,确定要使用的连接字符串)。

但是,我想避免每个服务请求都必须传递国家代码。我在这里有哪些选择?

例如,我可以为每个国家/地区设置一个端点吗?但在那种情况下,我怎么知道调用服务时使用了哪个端点/国家/地区代码?

也许还有其他可能性?

最佳答案

多个端点可能是一种解决方案,但您需要一种可靠的方法来确定实际使用了哪个端点。鉴于 WCF REST 服务的“断开连接”性质(我的意思是使用非 WCF 类型进行通信并仅使用 WCF 属性),这将需要您编写一个 WebHostFactory 来指定创建服务的国家/地区对于给定的端点。您可以做的是检查 WebOperationCurrent.Current 实例以访问隐藏在您的方法签名中的信息。例如:

Uri requestRoot = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.BaseUri;
if (requestRoot.PathAndQuery.Contains("en-us")) {
// use english locale
}
else if (requestRoot.PathAndQuery.Contains("de-de")) {
// use german locale
}

您需要更好的策略来确定实际的国家/语言,但基本思想是在多个路径下重新托管相同的服务,并使用当前的 WebOperationContext 检查请求中的这些路径实例。

编辑从上面的评论中,我想补充一点,您可以使用 WebOperationContext 访问当前请求的 UserAgent 字符串。因此,您还可以检查这些信息以寻找有关所请求语言的线索。但请记住,这些“隐式”信息只是线索,绝不会明确指示用户想要什么。

关于c# - WCF REST 服务 : passing country code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8309497/

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