我创建了一个新的wcf4 Web应用程序并添加了一个新的wcf服务。 我创建了一个子文件夹,并将创建的服务移动到子文件夹中。
e.g。
ROOT
ROOT/Business/V1/BusinessV1.svc
我已将服务部署到我的IIS7环境中但是我一直收到此错误
类型 'MyNameSpace.WebWCF.Business.V1', 作为服务属性提供 ServiceHost指令中的值,或 在配置元素中提供 system.serviceModel / serviceHostingEnvironment / serviceActivations 无法找到。
我的服务文件如下所示
<%@ ServiceHost Language="C#" Debug="true"
Service="MyNameSpace.WebWCF.BusinessV1" CodeBehind="BusinessV1.svc.cs" %>
背后的代码看起来像
namespace MyNameSpace.WebWCF
{
public class BusinessV1 : IBusinessV1
{
}
}
我的合约似乎是
namespace MyNameSpace.WebWCF
{
[ServiceContract]
public interface IBusinessV1
}
最后我的web.config
<system.serviceModel>
<services>
<service name="MyNameSpace.WebWCF.Business_v1">
<endpoint
address="http://mydomain.com/Business/v1/BusinessV1.svc"
binding="basicHttpBinding"
bindingConfiguration=""
contract="MyNameSpace.WebWCF/IBusinessV1"
listenUri="/" isSystemEndpoint="true" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
有人可以帮我解决我做错的事吗?它让我疯狂。
答案 0 :(得分:3)
有一点是:您的服务名称不一致。
在您的服务实现类中,您有:
namespace MyNameSpace.WebWCF
{
public class BusinessV1
并在您的*.svc
文件中,您拥有相同的限定名称:
Service="MyNameSpace.WebWCF.BusinessV1"
但是在web.config
中,您使用:
<service name="MyNameSpace.WebWCF.Business_v1">
您的服务实现是定义服务名称的服务实现 - 使用命名空间完全限定:MyNameSpace.WebWCF.BusinessV1
因此,您需要使用此完全限定名称 - 并且完全 - 在*.svc
文件中(确定!)和您的web.config
:
<service name="MyNameSpace.WebWCF.BusinessV1">
使用MyNameSpace.WebWCF.BusinessV1
代替MyNameSpace.WebWCF.Business_v1
。
如果该名称不匹配,WCF运行时将找不到您指定的配置,并将回退到系统默认值
答案 1 :(得分:0)
两个问题可能会有所帮助:
第一:移动后你确定合同仍然与网络服务相对应吗?
和/或
第二部分:您是否更新了Web服务(从项目列表中Web服务条目的上下文菜单中更新; atm。我没有VS更具体)。