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);
}

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

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

找不到类型“BookService.Service1”,作为 ServiceHost 指令中的服务属性值提供,或在配置元素 system.serviceModel/serviceHostingEnvironment/serviceActivations 中提供。

我怎么解决这个问题?

4

1 回答 1

11

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

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

右键单击“file.svc”并选择“查看标记”

在那里你会发现一个很长的行,其中包含如下部分: Service="SomeRootNameSpace.class1" 你应该将 'class1' 更改为真实的类名。

请让我知道它是否有帮助或者您是否已经解决了它。如果以上不清楚,请告诉我,我会尝试重新解释。

于 2014-03-17T19:49:47.813 回答