0

こんにちは、私は WCF を学んでおり、既存の ASP.NET MVC 4 アプリケーション用の Web サービスを作成しようとしています。

WCF サービス アプリケーションを作成しました。データ コントラクトとデータ メンバーを次のように定義しました。

[DataContract]
public class BookData
{
    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public string Author { get; set; }

    [DataMember]
    public string Description { get; set; }

    [DataMember]
    public DateTime PublicationDate { get; set; }

    [DataMember]
    public int CategoryId { get; set; }

    [DataMember]
    public decimal Price { get; set; }

    [DataMember]
    public string BookUrl { get; set; }
}

サービス コントラクトを定義しました。

[ServiceContract]
public interface IBookService
{
    IEnumerable<BookData> GetBooks(int pageNumber, int numberOfBooksOnPage);
    IEnumerable<BookData> GetBookByCategory(int categoryId, int pageNumber, int numberOfBooksOnPage);
    BookModel GetBookById(int bookId);
    int CountBooks();
    int CountBooksByCategory(int categoryId);
    void AddBook(BookData book);
    void UpdateBook(BookData book);
    void DeleteBook(int bookId);
}

BookService.svc に名前を変更した既存の Service1.svc ファイルがありました。このファイルをダブルクリックすると、実際にはクラスであり、IBookService から継承し、すべてのメソッドを実装しました。

BookService.svc を右クリックしてブラウザで表示をクリックすると、次のエラーが表示されます。

ServiceHost ディレクティブで Service 属性値として提供されるか、構成要素 system.serviceModel/serviceHostingEnvironment/serviceActivations で提供されるタイプ 'BookService.Service1' が見つかりませんでした。

どうすればこの問題を解決できますか?

4

1 に答える 1

11

すべてのGoogle検索者の利益のためだけに古い質問に答えます:)私はちょうど同じ問題を抱えていました.

それを解決しようとしているときに、「file.svc」のマークアップ セクションでクラス名を変更するのを忘れていることがわかりました。

「file.svc」を右クリックし、「マークアップを表示」を選択します

そこには、次のような非常に長い行があります: Service="SomeRootNameSpace.class1" 「class1」を実際のクラス名に変更する必要があります。

それが役に立ったかどうか、またはすでに解決したかどうかを教えてください。上記が明確でない場合は、教えてください。もう一度説明します。

于 2014-03-17T19:49:47.813 に答える