无法找到作为ServiceHost指令中的Service属性值提供的类型'BookService.Service1'

时间:2013-03-29 13:39:10

标签: c# wcf

您好我正在学习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);
}

我将一个现有的Service1.svc文件重命名为BookService.svc。当双击这个文件时,它实际上是一个类,我让它继承自IBookService并实现了所有方法。

当我右键单击BookService.svc并在浏览器中单击视图时,我收到此错误:

  

类型&#39; BookService.Service1&#39;,作为ServiceHost指令中的Service属性值提供,或者在配置元素system.serviceModel / serviceHostingEnvironment / serviceActivations中提供。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:11)

为了所有谷歌搜索者的利益回答一个老问题:)我遇到了同样的问题。

在尝试解决问题时,我发现我忘记在“file.svc”的标记部分更改类名。

右键单击“file.svc”并选择“view markup”

在那里你会找到一个很长的行,其中包含一个部分:Service =“SomeRootNameSpace.class1” 您应该将“class1”更改为真实的类名。

如果有帮助或者你已经解决了,请告诉我。 如果以上不清楚告诉我,我会尝试重新解释。