无法找到作为ServiceHost指令中的Service属性值提供的类型'RestService.weddingservice'

时间:2012-03-04 17:35:31

标签: asp.net wcf

我正在尝试创建我的第一个WCF restful服务。 在VS2010中,我打开weddingservice.svc,然后点击F5。浏览器将打开http://localhost:50043/weddingservice.svc 但在那里,这是我得到的错误:

Server Error in '/' Application.

The type 'RestService.weddingservice', provided as the Service attribute value in the ServiceHost directive, or provided in the configuration element system.serviceModel/serviceHostingEnvironment/serviceActivations could not be found.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: The type 'RestService.weddingservice', provided as the Service attribute value in the ServiceHost directive, or provided in the configuration element system.serviceModel/serviceHostingEnvironment/serviceActivations could not be found.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 


[InvalidOperationException: The type 'RestService.weddingservice', provided as the Service attribute value in the ServiceHost directive, or provided in the configuration element system.serviceModel/serviceHostingEnvironment/serviceActivations could not be found.]
   System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) +51530
   System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath) +1461
   System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +44
   System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +651

[ServiceActivationException: The service '/weddingservice.svc' cannot be activated due to an exception during compilation.  The exception message is: The type 'RestService.weddingservice', provided as the Service attribute value in the ServiceHost directive, or provided in the configuration element system.serviceModel/serviceHostingEnvironment/serviceActivations could not be found..]
   System.Runtime.AsyncResult.End(IAsyncResult result) +688590
   System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +190
   System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, String routeServiceVirtualPath, Boolean flowContext, Boolean ensureWFService) +234
   System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender, EventArgs e) +359
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +148
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272

在我的代码下面,我希望任何人都能看到我做错了什么。我没有使用正确的URI吗?我错过了什么?

weddingservice.svc

<%@ ServiceHost Language="VB" Debug="true" Service="RestService.weddingservice" CodeBehind="weddingservice.svc.vb" %>

Iweddingservice.vb

Imports System.ServiceModel
Imports System.Web
Imports System.IO
Imports System.Runtime.Remoting.Activation
Imports System.Collections.Generic

Namespace RestService
<ServiceContract()>
Public Interface Iweddingservice

    <OperationContract()> _
<Web.WebGet(UriTemplate:="job/{name}")> _
    Function DoJob(name As String) As String

End Interface
End Namespace

weddingservice.svc.vb

Imports System.ServiceModel
Imports System.ServiceModel.Web
Imports System.IO
Imports System.ServiceModel.Activation
Imports System.Web.Script.Serialization
Imports System.Collections.Generic
Imports System.Xml
Imports System.Net

Namespace RestService
    Public Class weddingservice
        Implements Iweddingservice

        Public Function DoJob(name As String) As String Implements Iweddingservice.DoJob
            Return String.Format("Hello, {0}", name)
        End Function
    End Class
End Namespace

的web.config

<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  <services>
    <service name="weddingservice">
      <endpoint binding="webHttpBinding" contract="RestService.Iweddingservice" behaviorConfiguration="webHttp"/>
    </service>
  </services>
<behaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="webHttp">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>
</system.serviceModel>  

6 个答案:

答案 0 :(得分:6)

设置

<serviceDebug includeExceptionDetailInFaults="false" />

<serviceDebug includeExceptionDetailInFaults="true" />

以获取更多详情

并尝试再次运行该过程

答案 1 :(得分:1)

我最近重新配置了我的项目并遇到了这个错误。

这是一个设置错误,我的服务DLL在发布网站时没有放在正确的目录中。

答案 2 :(得分:0)

请更改您的服务元素:

<service name="weddingservice">

到:

<service name="RestService.weddingservice">

这应解决您的问题

答案 3 :(得分:0)

当我将Bin文件夹和obj文件夹手动添加到文件夹路径中时,我的问题得以解决。我现在能够很好地访问它。

答案 4 :(得分:0)

我有同样的问题。只需删除bin和obj文件夹并重建就可以解决问题。

答案 5 :(得分:0)

我的项目将dll构建到bin目录下的文件夹以匹配配置名称,因此如果项目名称为DemoWCF且配置为Debug,则dll将在此处:

/bin/Debug/DemoWCF.dll

当我从输出路径中删除Debug /并将dll构建到此处时:

/bin/DemoWCF.dll 

按预期推出一切。

这是在“输出路径”

中项目属性的“构建”选项卡下配置的