2011-05-07 72 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页面。希望这可以帮助!

相关问题