WCF RESTful - 单个操作方法的 HTTPS

本文关键字:HTTPS 操作方法 单个 RESTful WCF | 更新日期: 2023-09-27 17:56:54

是否可以

在 RESTful WCF 中为单个操作方法启用 https?我正在将此服务用于移动应用程序,因此我不想为整个服务启用https。

对不起我的英语...

WCF RESTful - 单个操作方法的 HTTPS

不适用于单个端点。终结点的绑定需要决定是使用 HTTP 还是 HTTPS(基于其传输绑定元素)。如果您真的想这样做(您可能不需要 - 尝试分析有和没有 SSL 的"大"响应,您可能会发现差异并不大),您可以定义两个端点,一个使用 SSL 用于该单个操作,另一个不使用 SSL 用于其他操作,如下例所示:

public class StackOverflow_22865228
{
    [ServiceContract]
    public interface ISecureOperation
    {
        [WebGet]
        int Add(int x, int y);
    }
    [ServiceContract]
    public interface IInsecureOperations
    {
        [WebGet]
        int Subtract(int x, int y);
        [WebGet]
        int Multiply(int x, int y);
    }
    public class Service : ISecureOperation, IInsecureOperations
    {
        public int Add(int x, int y) { return x + y; }
        public int Subtract(int x, int y) { return x - y; }
        public int Multiply(int x, int y) { return x * y; }
    }
    public static void StartService()
    {
        string baseAddressHttp = "http://localhost:8000/Service";
        string baseAddressHttps = "https://localhost:8888/Service";
        ServiceHost host = new ServiceHost(typeof(Service), new Uri(baseAddressHttp), new Uri(baseAddressHttps));
        host.AddServiceEndpoint(typeof(ISecureOperation), new WebHttpBinding(WebHttpSecurityMode.Transport), "")
            .Behaviors.Add(new WebHttpBehavior());
        host.AddServiceEndpoint(typeof(IInsecureOperations), new WebHttpBinding(), "")
            .Behaviors.Add(new WebHttpBehavior());
        host.Open();
        Console.WriteLine("Press ENTER to close");
        Console.ReadLine();
        host.Close();
    }
}