私は伝説的なError: Cannot obtain Metadata from...
メッセージを受け取っています。特に、http://localhost:1640/Service1.svc
stackoverflow と Google を精査しましたが、これまでのところ、どれも役に立ちませんでした。私はそれを馬鹿にするために新しい製品を作成しましたが、まだ機能していません. だから私はここで助けを求めています。
JSON を使用する WCF サービスをセットアップしようとしています。つまり、C# で webhttpbinding を使用する必要があります。WCF テスト クライアントを使用すると、前述のメタデータ エラーが発生します。Visual Studio Express 2010 とターゲット フレームワークを使用しています。私は 2 日間これに取り組んできましたが、なぜ、または何が問題なのか理解できません。
助けていただければ幸いです。ありがとうございました。
これが私のweb.configファイルです:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="WcfService4.Service1"
behaviorConfiguration="jsonRestDefault">
<endpoint
name="jsonRestEndpoint"
behaviorConfiguration="RESTFriendly"
binding="webHttpBinding"
contract="IService1"
address="http://localhost:1640/Service1.svc"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="jsonRestDefault">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="RESTFriendly">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
IService1.cs ファイルは次のとおりです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
namespace WcfService4
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebInvoke(
Method = "GET",
UriTemplate = "players",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare)]
List<Person> GetPlayers();
}
// Use a data contract as illustrated in the sample below to add composite types to service operations.
[DataContract]
public class Person
{
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public int Age { get; set; }
public Person(string firstName, string lastName, int age)
{
this.FirstName = firstName;
this.LastName = lastName;
this.Age = age;
}
}
}
Service1.svc.cs ファイルは次のとおりです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Net;
namespace WcfService4
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
public class Service1 : IService1
{
public List<Person> GetPlayers()
{
List<Person> players = new List<Person>();
players.Add(new Person ( "Peyton", "Manning", 35 ) );
players.Add(new Person ( "Drew", "Brees", 31 ) );
players.Add(new Person ( "Brett", "Favre", 38 ) );
return players;
}
}
}