2011-07-07 23 views
1

我已经使用WCF Web API实现了一个restful服务,并且我想在IIS中发布它。 在开发过程中,我使用服务作为控制台应用程序,所有配置都是通过API完成的。 现在我试图发布服务作为ASP.NET应用程序,我看到的唯一方法是以某种方式将所有配置移动到Web配置文件。将WCF Web API配置文件添加到IIS

这里的编码配置:

var cfg = HttpHostConfiguration.Create() 
       .AddMessageHandlers(typeof(AllowCrossDomainRequestHandler)); 

using (var host = new HttpConfigurableServiceHost(typeof(RESTfulService), cfg , new Uri("http://localhost:8081"))) 
      { 
       var endpoint = ((HttpEndpoint)host.Description.Endpoints[0]); //Assuming one endpoint 
       endpoint.TransferMode = TransferMode.Streamed; 
       endpoint.MaxReceivedMessageSize = 1024 * 1024 * 10; // Allow files up to 10MB 

       host.Open(); 
       Console.WriteLine("Host opened at {0} , press any key to end", host.Description.Endpoints[0].Address); 
       Console.ReadKey(); 
      } 

应该如何我的web.config的外观,以反映此配置? 还是有没有其他的方法,而不是使用ASP.NET?

任何帮助表示赞赏。

回答

1

如果你想保留你现有的配置,你可以把所有配置设置的东西放到一个方法中,并从global.asaxApplication_Start()方法中调用它。所有的Global.asax方法都将在WCF中调用,就像它们为ASP.NET所做的一样。

或者,您可以将您的服务连接到自定义的ServiceHostFactoryServiceHost,其中包含所有配置(这是我在当前应用程序中使用的方法)。

+0

ServiceHost来自WCF而不是来自WCF Web API的权利?通过使用ServiceHost,我将失去WCF Web API提供的所有优点。 – aumanets

+0

是的,我认为你是对的。 WCF Web API提供了ServiceHost的'WebServiceHost'味道,但它不像普通的WebAPI那样多......他们确实给一个已经复杂的框架添加了一些复杂性,不是吗? :) – CodingWithSpike

+0

他们已经添加了一个简单和更有组织的方式来创建REST式服务。 WCF Web API只是预览版4,我相信这个API将在未来得到改进。我想现在我会坚持使用服务器端的硬编码版本。谢谢,感谢你的帮助。 – aumanets