将简单的WCF服务部署到Web服务器
问题描述:
在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>
我在想配置文件可能存在一些问题,但服务在本地机器上运行得很好。
答
首先,您必须使用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" %>