具有基于URI / URL的功能的WCF Web服务

时间:2012-12-16 18:08:22

标签: wcf uritemplate

我正在使用的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内容,这非常有趣,而且我要留下的东西......那么......有什么想法吗?

1 个答案:

答案 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
}