2011-05-07 102 views

回答

5

WCF是用於創建服務的API。處理「配置網頁」超出了本API的範圍。如果你真的想這樣做,這意味着你必須創建另一個REST(webHttp)服務,它將公開你的網頁的操作並接受來自你網頁的HTTP POST。這是可能的,但要做很多工作,因爲當前的WCF版本爲doesn't like content type of POSTed HTML forms(application/x-www-form-urlencoded和multipart/form-data)。您可以通過使用HttpListener以相同的方式實現您自己託管的「Web服務器」。

0

是的,這是可能的。您可以在.NET應用程序中託管WCF服務,或者在HTTP或TCP端口上託管Windows服務。

然後,您將不得不在另一個Web服務器中託管您的站點,並在您的Web應用程序中創建對您的WCF服務的引用。

+0

有關在MSDN上創建服務主機的更多信息,請訪問:http://msdn.microsoft.com/en-us/library/ms731758.aspx – DaveRead 2011-05-07 14:35:51

+0

這不回答提問者的問題。我可以看到從WCF託管HTML頁面的原因之一是用於配置或避免跨域腳本限制(REST服務必須與提供HTML頁面的服務器位於同一域中)。 – 2013-08-10 22:12:19

0

自託管代替IIS通常包含IIS應用程序池的工具/回收/恢復功能的丟失。但是,自主託管往往表現更好。

3

是的,你可以。當將HTTP幫助行爲添加到服務時,這正是WSDL幫助頁面的服務方式。

[ServiceContract] 
public interface ITestService 
{ 
    [OperationContract] 
    [WebGet(BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "test")] 
    Stream GetPage(); 
} 

[ServiceBehavior] 
public class TestService : ITestService 
{ 
    public Stream GetPage() 
    { 
     var pageStream = new FileStream(Path.Combine(Environment.CurrentDirectory, "test.htm"), FileMode.Open, FileAccess.Read, FileShare.Read); 
     var context = WebOperationContext.Current; 

     if (context != null) 
     { 
      context.OutgoingResponse.ContentType = "text/html"; 
     } 

     return pageStream; 
    } 
} 

您也可以在頁面中建立內存流。此外,在WCF 4.5+中,提供HttpResponseMessage類型用於提供html頁面。希望這可以幫助!

相關問題