2010-12-10 154 views
0

在IIS 7.0中创建了一个新的目录XYZ。将web.config,Service.cs和Service.svc复制到目录。现在浏览http://www.mydomain.com/XYZ/Service.svc我得到'500内部服务器错误'。将简单的WCF服务部署到Web服务器

这是web.cofig文件。

<?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> 

我在想配置文件可能存在一些问题,但服务在本地机器上运行得很好。

回答

1

首先,您必须使用dll文件而不是代码文件。编译代码并将dll放入“bin”文件夹中。

在第二,您没有添加到终点web.cofnig:

<system.serviceModel> 
<!-- ... --> 
    <services> 
     <service name="SiteService"> 
      <endpoint address="" binding="basicHttpBinding" 
       contract="Name of the service interface with namespace, for exanple WebApplication1.IService1" /> 
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service> 
    </services>  
</system.serviceModel> 

并检查SVC文件,里面一个服务名称应该对应一个配置文件中服务名称。如果一项服务有一行<service name="SiteService">,则svc文件应该是

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