最近在学习WCF和SQl,但是在读取的时候出现了:
Metadata publishing for this service is currently disabled.请问应该如何解决这个问题呢?
下面是小弟的代码:
Ship1.svc.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Json;
using System.ServiceModel.Activation;
using System.Data.SqlClient;namespace PirateServices
{
       public class Ship1 : IShip
    {
        private PivateDBEntities _model = new PivateDBEntities();        public List<ShipItem> ships()
        {
            var result = from n in _model.Ship
                         select n;            List<ShipItem> lst = new List<ShipItem>();            ShipItem i;        //   
           
                foreach (var item in result.ToList())
                {
                    i = new ShipItem();                    i.attack = item.attack;
                    i.speed = item.speed;
                    i.id = item.ship_id;
                    i.name = item.name;
                    i.picture = item.picture;                    lst.Add(i);
              
            }
            return lst;
        }     
       
    }    [DataContract]
    public class ShipItem
    {
        [DataMember]
        public Guid id { get; set; }
        [DataMember]
        public string name { get; set; }
        [DataMember]
        public int attack { get; set; }
        [DataMember]
        public int defence { get; set; }
        [DataMember]
        public int speed { get; set; }
        [DataMember]
        public string picture { get; set; }
    }}IShip.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Web;namespace PirateServices
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IShip”。
    [ServiceContract]
    public interface IShip
    {
        [OperationContract]
           [WebInvoke(Method = "GET",
           ResponseFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Wrapped,
           UriTemplate = "jason/{id}")]           [WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
        List<ShipItem> ships();            }
}Web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <system.web>
    <compilation debug="true" targetFramework="4.5">
      <assemblies>
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>
    <httpRuntime targetFramework="4.5" />
  </system.web>
  <system.serviceModel>    <services>
      <service name="PirateServices.Ship1" behaviorConfiguration="PirateServiceBehaviour">
        <endpoint address ="" binding="webHttpBinding" contract="PirateServices.IShip" behaviorConfiguration="web">
        </endpoint>
      </service>
    </services>    <behaviors>
      <serviceBehaviors>
        <behavior name="PirateServiceBehaviour">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>  </system.serviceModel>  <connectionStrings>
   <add name="PivateDBEntities" connectionString="metadata=res://*/Core.csdl|res://*/Core.ssdl|res://*/Core.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sqlexpress;initial catalog=PivateDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
</configuration>