我可以从不在IIS中托管的WCF服务提供网页吗?

Mar*_*ter 3 wcf

我有一个WCF服务,它将像标准Web服务一样使用,但我也想为各种服务设置提供配置UI.当服务未在IIS中托管时,是否可以提供标准HTML页面?如果是这样,那里有什么"陷阱"?

Lad*_*nka 6

WCF是用于创建服务的API.处理"配置网页"超出了此API的范围.如果您真的想要做类似的事情,那就意味着您必须创建另一个REST(webHttp)服务,该服务将公开为您的网页提供服务并接受来自您网页的HTTP POST.这是可能的,但要做很多工作,因为当前的WCF版本不喜欢POST的HTML表单的内容类型(application/x-www-form-urlencoded和multipart/form-data).您可以通过使用HttpListener以相同的方式实现自己的自托管"Web服务器" .


Jar*_*d G 5

是的你可以.这正是在向服务添加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;
    }
}
Run Code Online (Sandbox Code Playgroud)

您还可以在内存流中构建页面.此外,在WCF 4.5+中,提供了HttpResponseMessage类型来提供html页面.希望这可以帮助!