すべてを実装するサービスクラスは次のとおりです。
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class RESTservice : IRESTservice, IRESTservice2
{
List<Person> persons = new List<Person>();
int personCount = 0;
public Person CreatePerson(Person createPerson)
{
createPerson.ID = (++personCount).ToString();
persons.Add(createPerson);
return createPerson;
}
public List<Person> GetAllPerson()
{
return persons.ToList();
}
public List<Person> GetAllPerson2()
{
return persons.ToList();
}
public Person GetAPerson(string id)
{
return persons.FirstOrDefault(e => e.ID.Equals(id));
}
public Person UpdatePerson(string id, Person updatePerson)
{
Person p = persons.FirstOrDefault(e => e.ID.Equals(id));
p.Name = updatePerson.Name;
p.Age = updatePerson.Age;
return p;
}
public void DeletePerson(string id)
{
persons.RemoveAll(e => e.ID.Equals(id));
}
}
(両方の契約は正常に機能しています)
これが私のウェブです。構成ファイル:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true">
</serviceHostingEnvironment>
<services>
<service name="RESTservice">
<endpoint address="RestService" binding="webHttpBinding" contract="test.IRESTservice" />
<endpoint address="RestService2" binding="webHttpBinding" contract="test.IRESTservice2" />
</service>
</services>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"></standardEndpoint>
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
そしてもちろん私のサービス宣言:
RouteTable.Routes.Add(new ServiceRoute("RestService", new WebServiceHostFactory(), typeof(RESTservice)));
localhost:port/RestService で http GET を実行すると、次の例外が発生します。
サービス「RESTservice」は複数の ServiceContract タイプを実装しており、構成ファイルにエンドポイントが定義されていません。WebServiceHost は既定のエンドポイントを設定できますが、サービスが単一の ServiceContract のみを実装している場合に限ります。単一の ServiceContract のみを実装するようにサービスを変更するか、構成ファイルで明示的にサービスのエンドポイントを定義してください。
何が問題なのかわかりません。リードはありますか?