WCF服务无法启动

时间:2013-06-25 08:30:51

标签: c# wcf web-services

我真的很抱歉再次提出这个问题。有类似的帖子,但没有一个解决方案适合我。

我在VisualStudio2010中创建了一个新的WCF服务项目。它创建了一个IService1.cs,Service1.svc和Service1.svc.cs

因此,当我尝试调试/启动服务时,出现以下错误。我正在运行Win7 x64。我正在使用集成的VisualStudio开发服务器(右键单击项目 - >转到页面“Web”)。

  

类型'Projector.Service1',作为Service属性值提供   在ServiceHost指令中,或在配置元素中提供   system.serviceModel / serviceHostingEnvironment / serviceActivations可以   找不到。

任何想法如何解决这个问题而不在IIS中运行它?

提前致谢。

Service1.svc只包含一行:

<%@ ServiceHost Language="C#" Debug="true" Service="Projector.Service1" CodeBehind="Service1.svc.cs" %>

Service1.svc.cs包含一个自动生成的类:

namespace Projector
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
    public class Service1 : IService1

这是Web.config

<?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>

3 个答案:

答案 0 :(得分:2)

AFAIK,如果你不使用IIS,那么svc是没用的。在IIS之外,所谓的自托管方法,需要你编写类似这样的东西,其中HelloWorldWcfServiceMessage是你实现服务契约的类型。另外,不要忘记为服务器配置端点,并确保允许您在配置的端口上打开服务。您可以在Windows服务或控制台程序中使用以下代码(更适合测试和调试)。希望有所帮助,我的问题是对的。

...
this.serviceHost = new ServiceHost(typeof(HelloWorldWcfServiceMessage));
this.serviceHost.Open();
...

public class HelloWorldWcfServiceMessage : IHelloWorldWcfServiceMessage
{

}

[ServiceContract(Namespace = "http://HelloWorldServiceNamespace", Name = "PublicHelloWorldWCFService")]
public interface IHelloWorldWcfServiceMessage
{
    [OperationContract]
    string HelloWorldMessage(string name);
}

答案 1 :(得分:0)

我认为这些名字存在一些混淆。

在SVC中你写道: 代码隐藏= “Service1.svc.cs” 但是你说你的文件名是Service.svc.cs(没有1)。

答案 2 :(得分:0)

解决了此问题

这就是在IIS 8上发布WCF服务

所有学分归GyörgyBalássy所有

WCF服务不能在具有默认配置的IIS 8上运行,因为Web服务器不知道如何处理针对.svcჱles的传入请求。您可以分两步教授它:

请在此处查看相同的答案。

https://stackoverflow.com/a/45979587/3059688