我正在使用的WCF服务正在替换旧的CMS托管API。
对于旧系统/数据库中的每个客户端站点,它的工作方式如下:
clientdomain.com 从 hostingdomain.com/clientdomain/api.xml 的网址中提取其内容(XML)(.xml扩展名实际上是一个经典的ASP页面根据clientdomain导出为XML)
例如:来自hostingdomain / clientdomain / photos / api.xml的clientdomain.com/photos供稿
所有客户端域都使用相同的api.xml文件,如hostingdomain / clientdomain2 /photos/api.xml,依此类推。
我猜测在接口设置中如下:
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "*clientdomain*/photos")]
//method
List<APIContentObject> GetPhotosBySiteID();
可以/如何更改URITemplate中的 clientdomain 以从我从数据库获取的列表/数组中提供?...或其他相应的内容,以便它知道/ client1 / photos和/客户2 /照片以UriTemplates的形式提供?或者我错过了什么?... 我在WCF中遇到整个URI / URL的问题......
我可以做一点点不同,并使用像photos.clientdomain.com这样的东西,并添加所有域作为主机头和.... ??沿着那条路线的东西?无论什么是最佳实践,在WCF和所有爵士乐中都是安全的。
这样做的目的是最终移动应用程序和网站都将从此WCF中获取。 (以及随后的推/拉管理应用程序)
旧系统使用了一些IIS技巧和经典的asp内容,这非常有趣,而且我要留下的东西......那么......有什么想法吗?
答案 0 :(得分:0)
网址模板可以填充操作合同方法中的参数。如下所示:
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "{clientdomain}/photos")]
//method
List<APIContentObject> GetPhotos(string clientdomain)
{
//Look up clientdomain in DB and return the right thing
}