我正在开发一个WCF应用程序,我需要创建“路由”,以便基于某些dll动态执行OperationContracts。
这就是它的样子
[ServiceContract]
public interface ImyWebService
{
[OperationContract] //Login to web server
[WebInvoke(BodyStyle = WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
Method = "POST",
UriTemplate = @"/login")]
LoginResponse MyLogin(LoginRequest request);
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple, MaxItemsInObjectGraph = int.MaxValue)]
public class WebService : ImyWebService
{
public LoginResponse MyLogin(LoginRequest request)
{
}
}
我们可以看到MyLogin是统计定义的,但我想在运行时添加其他OperationContract。
这可能吗?我发现的所有解决方案都不适合我的使用。
答案 0 :(得分:1)
我找到了解决问题的方法。
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
Method = "POST",
UriTemplate = @"*")]
GenericResponse Post(GenericRequest request);
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = @"*")]
GenericResponse Get();
这是我的朋友们的关键! UriTemplate = @"*"
星号“*”UriTemplate
将所有请求重定向到指定的方法。
在此之后我只需要创建一个路由系统。