none
OData(WCF数据服务) 必须托管在IIS上吗? 可不可以自托管? RRS feed

  • 常规讨论

  • OData(WCF数据服务) 必须托管在IIS上吗? 可不可以自托管?

    比如我想自托管到windowsservice可以吗? 有没有demo?

    谢谢。

    2013年11月16日 12:11

全部回复

  • 你好,

    WCF的典型宿主包括以下四种:
    1、"Self-Hosting" in a Managed Application(自托管宿主)
    2、Managed Windows Services(Windows Services宿主)
    3、Internet Information Services(IIS宿主)
    4、Windows Process Activation Service(WAS宿主)

    对于自托管我们一般会利用WCF提供的ServiceHost<T>提供的Open()和Close()方法,可以便于开发者在控制台应用程序,Windows应用程序乃至于ASP.NET应用程序中来托管服务.

    代码非常简单,在新建的控制台程序的Main()方法中添加如下代码:

    using (ServiceHost host = new ServiceHost(typeof(DocumentsExplorerService)))
    {
        host.Open();
    
        Console.WriteLine("The Service had been launched.");
        Console.Read();
    }
    

    然后再配置应用程序的app.config配置文件.

    这里,有对此详细的介绍.


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2013年11月18日 7:23
    版主
  • 我知道WCF服务可以,

    但是OData服务可以吗?

    2013年11月23日 5:31
  • 我知道WCF服务可以,

    但是OData服务可以吗? 我的意思是 OData数据服务如何自托管

    下面是一个OData服务,如何修改成自托管呀?


    2013年11月23日 8:09
  • 图片上传失败了,请再传一次。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2013年11月25日 1:25
    版主
  • 图片上传失败了,请再传一次。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.

    图片到时没有什么意义,我就是想知道OData如何自定义托管


    比如我想在windowsService上托管,代码如何写呀?谢谢

    2013年11月25日 6:50
  • 你好,

    我不太明白OData服务,在我的了解中,OData只是一种开放式数据协议 (OData) ,它将数据作为包含可通过 URI 进行寻址的资源的源进行公开。它是不存在服务的.

    一般我们所说的OData服务就是WCF Data Service.


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2013年11月25日 9:05
    版主
  • 非常感谢您的回答

    我们默认创建的OData服务,是在Web项目里面,那也就意味值只能托管到IIS上。

    而我们平时创建的WCF服务是可以自定义托管的(比如:IIS,windowsService,winform等之类的)

    我想知道的就是OData服务可以托管到Winform、WindowsService等上吗?

    如果可以如何写?

    2013年11月26日 3:46
  • 请各位帮助一下,非常感谢您。
    2013年11月30日 3:54
  •   .....
    2013年12月10日 2:40
  • 比如:

    public class MyService:DataService<MyEntities>;

    DataServiceHost host = new DataServiceHost( typeof( MyService ) );  
     host.Open();

    2013年12月10日 3:01
  •   static void Main()
            {
                try
                {
                    var uri = new[] {new Uri("http://127.0.0.1:8001/ODataServices")};
                    var host = new DataServiceHost(typeof(Service), uri);
                    host.Opened += (o, e) =>  Console.WriteLine("OData...."); 
                    host.Open();
                    Console.ReadKey();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                Console.ReadKey();
            }
    
            private class Service : DataService<wkmEntities>
            {
                public static void InitializeService(DataServiceConfiguration config)
                {
                    config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
                    config.SetServiceOperationAccessRule("*", ServiceOperationRights.AllRead);
                    config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
                    config.UseVerboseErrors = true;
                }
            }

    2013年12月10日 5:30
  •   static void Main()
            {
                try
                {
                    var uri = new[] {new Uri("http://127.0.0.1:8001/ODataServices")};
                    var host = new DataServiceHost(typeof(Service), uri);
                    host.Opened += (o, e) =>  Console.WriteLine("OData...."); 
                    host.Open();
                    Console.ReadKey();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                Console.ReadKey();
            }
    
            private class Service : DataService<wkmEntities>
            {
                public static void InitializeService(DataServiceConfiguration config)
                {
                    config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
                    config.SetServiceOperationAccessRule("*", ServiceOperationRights.AllRead);
                    config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
                    config.UseVerboseErrors = true;
                }
            }


    请从服务器日志中找到具体的错误原因。
    2013年12月10日 6:54