我们尝试使用非常简单的WCF服务和HTTp Get,但我们无法使用它。 我们已经遵循了这些“指南”,但它不起作用
当我们使用以下网址调用我们的服务时,我们会收到找不到网页的错误:
基本网址(http:// localhost:9999 / Service1.svc)运行正常,并正确返回wcf服务信息页。
这些是重现我们的例子的步骤和代码。
用此代码替换IService接口
[ServiceContract()]
public interface IService1
{
[OperationContract()]
[WebInvoke(Method = "GET",
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "GetData/{value}")]
string GetData(string value);
}
使用此代码替换Service类
public class Service1 : IService1
{
public string GetData(string value)
{
return string.Format("You entered: {0}", value);
}
}
web.config看起来像这样
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="Service1">
<endpoint address="" binding="webHttpBinding" contract="IService1" behaviorConfiguration="WebBehavior1">
</endpoint>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="WebBehavior1">
<webHttp helpEnabled="True"/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
如果有人得到这个或类似的工作,如果你能回复有关工作示例的信息,那将非常友好。
非常感谢
答案 0 :(得分:1)
我重新创建了你的样本 - 就像一个魅力。
有一点:您的服务合同(public interface IService1
)和服务实现(public class Service1 : IService1
)是否存在于.NET命名空间内?
如果是这样,您需要更改* .svc和web.config
以包含:
<services>
<service name="Namespace.Service1">
<endpoint address="" binding="webHttpBinding"
contract="Namespace.IService1"
behaviorConfiguration="WebBehavior1">
</endpoint>
</service>
</services>
<service name="...">
属性和<endpoint contract="...">
必须包含.NET命名空间才能生效。