0

我正在使用 WCF 服务替换旧的 CMS 托管 API。

对于旧系统/数据库中的每个客户端站点,它的工作方式如下:

clientdomain.com从hostingdomain.com/clientdomain/api.xml的 URL 中提取其内容 (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中的客户端域更改为从我从数据库获得的列表/数组中提供数据?...或类似的东西,以便它知道 /client1/photos 和 /client2/photos 可用作 UriTemplates?还是我遗漏了什么?...我在 WCF 中遇到了整个 URI/URL 问题...

我可以做一些不同的事情并使用像photos.clientdomain.com这样的东西并将所有域添加为主机头和......??......沿着这条路线?无论是 WCF 和所有爵士乐中的最佳实践和安全。

这样做的目的是最终移动应用程序和网站都将从这个 WCF 中提取。(以及随后的推/拉管理应用程序)

旧系统使用了一些非常有趣的 IIS 诡计和经典的 asp 东西,而我将留下一些东西......所以......有什么想法吗?

4

1 回答 1

0

URL 模板可以在您的操作合同方法中填充参数。类似于以下内容:

[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
}
于 2012-12-17T05:13:44.453 回答