在IIS 7.5中托管WCF服务时出错

时间:2011-03-29 17:39:55

标签: iis-7 wcf

我有一个WCF服务,我想在IIS 7.5中托管。我的设置: .svc文件的文件夹的物理路径是:C:\ inetpub \ wwwroot \ SmartSolution \ Services \ Services \ ContainerManagementService.svc 我的二进制文件位于C:\ inetpub \ wwwroot \ SmartSolution \ Services \ bin

我在IIS中为两个Services文件夹创建了一个Web应用程序。

以下是WCF端点的配置文件:

      <service behaviorConfiguration="MyNamespace.ContainerManagementServiceBehavior"
    name="MyNamespace.ContainerManagementService">
    <endpoint address="" binding="basicHttpBinding"
       name="ContainerManagementbasicHttpEndpoint" contract="MyNamespace.IContainer"/>                  
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>      
   <behaviors>      
    <behavior name="MyNamespace.ContainerManagementServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
</behaviors>

这是我的.svc文件makrkup:

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

当我尝试导航到:http://localhost/SmartSolution/Services/Services/ContainerManagementService.svc时,会显示以下错误:

  

无法找到作为ServiceHost指令中的Service属性值提供的类型“MyNamespace.ContainerManagementService”。

如何让服务正常运行。谢谢!

2 个答案:

答案 0 :(得分:0)

如果您的网站已预编译且您已在MyNamespace.ContainerManagementService文件夹中包含二进制文件(包含bin),则无需指定CodeBehind属性:

<%@ ServiceHost 
    Language="C#"    
    Debug="true" 
    Service="MyNamespace.ContainerManagementService" 
%>

另一方面,如果您的网站未进行预编译,并且您已提供源代码,则此源代码必须位于特殊的~/App_Code文件夹中。

答案 1 :(得分:0)

IIS希望您的bin文件夹与.svc文件位于同一文件夹中,但看起来您已将其放在父文件夹中。

此外,您应该只需要IIS中指定的一个应用程序。