我是WCF的新手。我创建了一个wcf服务应用程序,其中有一个接口和类。
我的界面:
using System.ServiceModel;
namespace WcfService1
{
[ServiceContract]
public interface IService1
{
[OperationContract]
string Display();
}
}
我的课程:
namespace WcfService1
{
public class Service1 : IService1
{
public string Display()
{
return "Hello";
}
}
}
现在我在浏览器中运行此服务。点击Service1.svc
后会出现以下屏幕
我可以访问浏览器上的Display()吗?
在听完第一个答案之后,接下来就是:
答案 0 :(得分:2)
如果您想通过浏览器访问它,我认为您正在寻找WebGet。
using System.ServiceModel;
using System.ServiceModel.Web;
namespace WcfService1
{
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet(RequestFormat = WebMessageFormat.XML, ResponseFormat = WebMessageFormat.XML, UriTemplate = "/display/")]
string Display();
}
}
添加这些行为
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
添加此端点地址
<service behaviorConfiguration="ServiceBehaviour" name="WCFService1.Service1">
<endpoint address="" behaviorConfiguration="web" binding="webHttpBinding"
bindingConfiguration="b_WebHttpBinding" contract="WCFService1.IService1" />
</service>
添加此绑定
<bindings>
<webHttpBinding>
<binding name="b_WebHttpBinding" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" transferMode="Buffered"
useDefaultWebProxy="true" crossDomainScriptAccessEnabled="true">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
</security>
</binding>
</webHttpBinding>
</bindings>
现在您应该可以像
一样打电话给您的服务了http://localhost:22727/Service1.svc/display/
然后它应该以XML格式显示一个字符串(如果你愿意,可以将它改为JSON)
另外,请确保参考以下库
System.ServiceModel.Web
System.Web.Extensions
System.Web.Services
System.Web
http://msdn.microsoft.com/en-us/library/bb412172(v=vs.110).aspx
答案 1 :(得分:0)
将您的解决方案拆分为两个项目:
“服务应用程序”是包含svc端点的Web项目。 “服务库”是包含您的服务的类库。
运行(F5)服务库项目时,Visual Studio将启动WCF测试客户端(WcfTestClient.exe),为您提供测试服务的快速界面。
您的Web项目中的.svc端点没有为您提供内置的测试界面(类似于它在asmx时期的工作方式)。