首先,我已经跟随了一堆类似问题的关于通用问题列表的问题,但这些还没有解决我的问题。
过去几天我一直在玩WCF服务,我开始迷失自己的想法。我的最终目标是我尝试使用方法" ping"通过网络电话可用,目前当我尝试通过浏览器调用我的方法时,我得到一个空白页面(当调用http LocalDomain / EMEACommonOperations.svc / webHttp / Ping时)。
我的界面和web.config如下所示。
界面:
public interface IEMEACommonOperations
{
*Other interface Code*
[WebGet]
[OperationContract]
string Ping();
}
相关网站.Config:
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<services>
<service behaviorConfiguration="HttpGetMetadata" name="EMEACommonOperations">
<endpoint address="webHttp"
binding="webHttpBinding"
bindingConfiguration=""
name="webHttp"
contract="IEMEACommonOperations"
behaviorConfiguration="WebHttp" />
<endpoint address="mex"
binding="mexHttpBinding"
name="mex"
contract="IEMEACommonOperations" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="webHttpBinding"
textEncoding="utf-8"
openTimeout="00:01:00"
receiveTimeout="00:03:00"
closeTimeout="00:01:00" />
<binding name="mexHttpBinding"
textEncoding="utf-8"
openTimeout="00:01:00"
receiveTimeout="00:03:00"
closeTimeout="00:01:00" />
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="HttpGetMetadata">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="WebHttp">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
类别:
namespace C.EMEA.Workflow.Services.BPM.HCP.ServiceClasses
{
public class EMEACommonOperations : ServiceBase, IEMEACommonOperations
{
public string Ping()
{
return DateTime.Now.ToString();
}
*Other class code*
}
}
然而,当我去运行时,我收到了错误#34;此服务的元数据发布目前已被禁用。&#34;。我已设法将其缩小到仅在我的行为节点输入了name属性时出现,但我不相信这是我问题的直接来源。
我很确定我的配置文件设置错误,但我无法发现错误。
答案 0 :(得分:0)
经过一天的搜索,我终于发现了我的问题。 经过进一步检查后发现我需要完全限定服务节点中类/接口的名称空间。我以前做过这个,但是当我做出改变时,我最终得到了一个新的错误并忽略了结果。不好的主意。
因此配置文件的相关部分变为:
<service name="*FullyQualifiedNamespace*.EMEACommonOperations">
<endpoint address="webHttp"
behaviorConfiguration="WebHttp"
binding="webHttpBinding"
contract="*FullyQualifiedNamespace*.IEMEACommonOperations" />
</service>
更新名称空间后出现的错误是我的接口有多于1个参数的方法,因此需要将webInvoke属性BodyStyle设置为Wrapped。