配置WCF的服务模型

本文关键字:模型 服务 WCF 配置 | 更新日期: 2023-09-27 18:10:23

我有一个非常基本的web服务,使用WCF (c#, . net 4.0)来返回hello消息。

在IIS 7下部署并运行它是可以的,但是当我通过CMD执行svcutil.exe http://localhost:4569/Service.svc?wsdl以测试web服务时,我得到:

远程服务器返回一个错误:415不能处理消息因为内容类型"application/soap+xml charset=utf8"不是期望的类型'text/xml charset=utf8'

当尝试添加服务引用(创建客户端)时,我得到

远程主机元数据强制关闭现有连接包含无法解析的引用:"http://localhost: 4569/Service.svc"。内容类型应用程序/soap + xml;服务不支持Charset =utf-8http://localhost: 4569/Service.svc。客户端和服务绑定可能不匹配。远程服务器返回一个错误:(415)不能处理消息,因为内容类型为"application/soap+xml";Charset =utf-8'不是预期的类型'text/xml;charset = utf - 8 ' . .

我很确定问题在我的网页下面。配置文件:

    <configuration>
      <system.web>
        <compilation debug="true" targetFramework="4.0" />
      </system.web>
      <system.serviceModel>
<services>
         <service name="Service">
             <endpoint name="soap" 
                 address="http://localhost:4569/Service.svc" 
                 binding="basicHttpBinding" 
                 contract="IService" />
             <endpoint name="mex" address="mex" binding="mexHttpBinding" 
                       contract="IMetadataExchange" />
         </service>
         <behaviors>
            <serviceBehaviors>
               <behavior>
                  <serviceMetadata httpGetEnabled="true"/>
                  <serviceDebug includeExceptionDetailInFaults="false"/>
               </behavior>
            </serviceBehaviors>
</services>
         </behaviors>
         <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
      </system.serviceModel>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>
    </configuration>

总之,这是我的代码:

IService.cs:

[ServiceContract]
public interface IService
{
    [OperationContract]
    string getMessage();
}

我的service.cs有

方法
public class Service : IService
{
    public string getMessage()
    {
        return "Ola servico";
    }
}

我真的不知道发生了什么,做了一些测试,经过一些研究,但没有成功。

Service.svc

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

配置WCF的服务模型

配置中没有定义服务和端点。尝试添加

<services>
  <service name="Service"> <!-- name should match the name in your .svc file (if you open it with a text editor) -->
    <endpoint name="soap" address="" binding="basicHttpBinding" contract="IService" />
    <endpoint name="mex" address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>