2011-07-07 59 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