0

以下のコードのサービスがあります

TaskService.svc

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class TodoService : ITodoService
{
    private readonly List<Todo> _dataSource;

    public TodoService()
    {
        _dataSource = new List<Todo>();
    }

    [WebGet(UriTemplate = "/Todos")]
    public List<Todo> Todos()
    {
        return _dataSource;
    }
}

データ転送オブジェクトは以下のとおりです

[ServiceContract]
public interface ITodoService
{
    [OperationContract]        
    List<Todo> Todos();
}

[DataContract]
public class Todo
{
    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public bool Completed { get; set; }

}

以下のようにweb.config

<services>
  <service name="SampleService.TodosBehavior">
    <endpoint address="" behaviorConfiguration="SampleService.TodosBehavior"
      binding="webHttpBinding" contract="SampleService.TodoService" />
  </service>
</services>
<behaviors>
  <endpointBehaviors>
    <behavior name="SampleService.TodosBehavior">
      <enableWebScript />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>

アプリケーションは、仮想ディレクトリを使用してIIS7でホストされますSampleService。ブラウザを使用して呼び出すhttp://localhost/SampleService/TaskService.svc/Todosと、何も表示されません。しかし、私は空の配列を期待していました。なんでそうなの?

4

1 に答える 1

1

WebGet()は、そのインターフェイスの実装ではなく、インターフェイス(ServiceContract)にある必要があると思います。また、UriTemplateの「Todos」の前にスラッシュが必要ですか?

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class TodoService : ITodoService
{
    private readonly List<Todo> _dataSource;

    public TodoService()
    {
        _dataSource = new List<Todo>();
    }

    public List<Todo> Todos()
    {
        return _dataSource;
    }
}

[ServiceContract]
public interface ITodoService
{
    [WebGet(UriTemplate = "Todos")]
    [OperationContract]        
    List<Todo> Todos();
}

IISでホストしている場合、TaskService.svcファイルはどのようになりますか?

編集:ああ、これはあなたの.svcファイルです。じゃあ心配しないで。

于 2012-06-27T17:07:51.750 に答える