最近在学习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="data source=.\sqlexpress;initial catalog=PivateDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /></connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
</configuration>
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="data source=.\sqlexpress;initial catalog=PivateDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /></connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
</configuration>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货