我正在尝试编写一个可重用的.NET程序集来实现WCF。
我目前的问题是如何获取程序集(使用ServiceContract,DataContract和WebGet属性进行适当修饰)并在我现有的ASP.NET WebForms应用程序中引用它并使用REST公开它。
理想情况下,我喜欢与JQuery兼容的Bare XML,JSON和SOAP WebServices的不同端点,但是现在我很高兴让Bare XML工作。现在我得到的全部是404资源无法找到。)
另一个问题是API有很多方法。因此,必须创建一个包装程序集的svc文件会很痛苦。
这是我的web.config中的system.serviceModel
所以,一旦我开始工作,我理论上可以编写一个.NET控制台应用程序,通过netTcp来托管这个程序集。
我发现实现这一目的的唯一三种方法是 我想出了3种可行的方法
提前感谢您的帮助。
答案 0 :(得分:2)
你基本上需要两件事:
我相信你已经完成了第1步,所以现在你需要决定在哪里举办这件事。
在IIS中托管
在这种情况下,您需要在虚拟目录中的某处创建“MyService.svc”文件,并将“WebServiceHostFactory”指定为其主机工厂 - 就是这样!
在某个虚拟目录中创建一个文件“MyService.svc”,并使用以下内容:
<%@ ServiceHost Language="C#" Debug="True"
Service="YourNamespace.YourService"
Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>
这应该是您需要做的全部 - 新的.NET 3.5 WebServiceHostFactory负责所有其他工作。
<强>自托管强>
在这种情况下,您需要创建主机EXE - 控制台应用程序或Windows服务。在其中,您将实例化WebServiceHost并加载您的服务类 - 基本上就是这样:
WebServiceHost wsh =
new WebServiceHost(typeof(YourNamespace.YourService),
new Uri("http://localhost/YourServiceBaseUrl"));
wsh.Open();
那么你的问题在哪里? :-)你已经决定主持了吗?
一旦您的REST服务启动并运行,任何应用和项目都应该能够通过导航到基本服务URL来使用它 - 您在创建和在自托管中打开WebServiceHost时指定的URL或者MyService.svc文件所在的虚拟目录的路径(包括* .svc文件 - 例如
http://localhost/VirtualDir/YourService.svc
在线提供了一个非常好的screencast series by Aaron Skonnard,它显示了WCF REST入门套件的各个方面以及如何在项目中轻松使用它。强烈推荐!
马克