Web services WCF webservice在“之后失败”;“提取接口”;
我不熟悉Web服务,有一个简单的问题 我用Visual Studio 2017编写了一个“Hello World”服务: ServiceAjax.svc.cs:Web services WCF webservice在“之后失败”;“提取接口”;,web-services,wcf,interface,Web Services,Wcf,Interface,我不熟悉Web服务,有一个简单的问题 我用Visual Studio 2017编写了一个“Hello World”服务: ServiceAjax.svc.cs: namespace WebServiceTest { [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)
namespace WebServiceTest
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ServiceAjax
{
[OperationContract]
[WebGet]
public string DoWork()
{
return "Hallo World";
}
}
}
namespace WebServiceTest
{
[ServiceContract]
public interface IServiceAjax
{
[OperationContract]
[WebGet]
string DoWork();
}
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ServiceAjax: IServiceAjax
{
public string DoWork()
{
return "Hallo World";
}
}
}
ServiceAjax.svc的内容如下:
<%@ ServiceHost Language="C#" Debug="true" Service="WebServiceTest.ServiceAjax" CodeBehind="ServiceAjax.svc.cs" %>
运行此命令时,我收到一个错误:
这是德语,因此我的翻译可能与英文信息不同:
“无法从中加载元数据…”
我有点不明白他告诉我:
在ServiceAjax实现的契约列表中找不到WebServiceTest.ServiceAjax WO
所以,它一定是一个垃圾场,因为我无法解释为什么提取接口会破坏服务,我肯定错过了一些简单的东西
但是我在网上找不到与“简单WCF Web HTTP服务”示例的区别
想法
更新:我将此添加到现有的ASPX项目中,而不是“干净”的wcf项目……我自己找到了答案(在获得风滚草徽章之后…)
网络配置中缺少一行
<endpoint address="mex"
binding="mexHttpBinding"
name="mex"
contract="IMetadataExchange" />
下面是我添加到web.config中的内容(allready包括删除了4行的行)
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="myServiceTypeBehaviors" >
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="myDataAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<services>
<service behaviorConfiguration="myServiceTypeBehaviors"
name="WebServiceTest.ServiceAjax">
<endpoint address=""
behaviorConfiguration="myDataAspNetAjaxBehavior"
binding="webHttpBinding"
name="ZESData"
contract="WebServiceTest.IZESData" />
<endpoint address="mex"
binding="mexHttpBinding"
name="mex"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
[ServiceContract(Namespace = "AJAXService")]
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="myServiceTypeBehaviors" >
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="myDataAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<services>
<service behaviorConfiguration="myServiceTypeBehaviors"
name="WebServiceTest.ServiceAjax">
<endpoint address=""
behaviorConfiguration="myDataAspNetAjaxBehavior"
binding="webHttpBinding"
name="ZESData"
contract="WebServiceTest.IZESData" />
<endpoint address="mex"
binding="mexHttpBinding"
name="mex"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>