I've implemented a self-hosted local web server using WCF as per this article:
Developing Web 2.0 User Interface for Self Hosted WCF Services using HTML5, CSS3 and JQuery
In real world applications, I've found that I needed to make the following modifications in order to handle deeper pathing to sub-folders. This works for my current needs because I simply created enough UriTemplates to get 6 folders deep. However, I suspect there must be a more elegant way to handle this that will allow any number of sub-folders to be served.
I tried to figure something out with wildcards (e.g. /{*path}/{resource}.{extension}) but it seems wildcards are only permitted in the last segment of the path.
Any help would be appreciated,
Ken
[OperationContract, WebGet(UriTemplate = "/{path}/{resource}.{extension}")]
Stream Links(string path, string resource, string extension);
[OperationContract, WebGet(UriTemplate = "/{path1}/{path2}/{resource}.{extension}")]
Stream Links2(string path1, string path2, string resource, string extension);
[OperationContract, WebGet(UriTemplate = "/{path1}/{path2}/{path3}/{resource}.{extension}")]
Stream Links3(string path1, string path2, string path3, string resource, string extension);
[OperationContract, WebGet(UriTemplate = "/{path1}/{path2}/{path3}/{path4}/{resource}.{extension}")]
Stream Links4(string path1, string path2, string path3, string path4, string resource, string extension);
[OperationContract, WebGet(UriTemplate = "/{path1}/{path2}/{path3}/{path4}/{path5}/{resource}.{extension}")]
Stream Links5(string path1, string path2, string path3, string path4, string path5, string resource, string extension);
[OperationContract, WebGet(UriTemplate = "/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}/{resource}.{extension}")]
Stream Links6(string path1, string path2, string path3, string path4, string path5, string path6, string resource, string extension);
public Stream Links(string path, string resource, string extension) {
return ...;
}
public Stream Links2(string path1, string path2, string resource, string extension) {
return Links(Path.Combine(path1, path2), resource, extension);
}
public Stream Links3(string path1, string path2, string path3, string resource, string extension) {
return Links(Path.Combine(path1, path2, path3), resource, extension);
}
public Stream Links4(string path1, string path2, string path3, string path4, string resource, string extension) {
return Links(Path.Combine(path1, path2, path3, path4), resource, extension);
}
public Stream Links5(string path1, string path2, string path3, string path4, string path5, string resource, string extension) {
return Links(Path.Combine(path1, path2, path3, path4, path5), resource, extension);
}
public Stream Links6(string path1, string path2, string path3, string path4, string path5, string path6, string resource, string extension) {
return Links(Path.Combine(path1, path2, path3, path4, path5, path6), resource, extension);
}