我正在遵循有关如何在位于here.
的WCF服务中添加授权的指南现在我的问题是当我创建服务并从中删除.DoWork()方法时,我收到一条错误消息:
'Testing.HelloService'没有实现接口成员'Testing.IHelloService.DoWork()
这显然是因为我删除了它,但它是否需要?在指南中它基本上说要从中删除.DoWork()方法,所以我正在写一个写错过的人。
当我创建它时,它会将HelloService和IHelloService文件添加到项目中。我是否需要向IHelloService添加更改?
以下是HelloService.svc.cs中的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Web;
using System.ServiceModel.Activation;
namespace MLA_Test_Service
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "HelloService" in code, svc and config file together.
[AspNetCompatibilityRequirements(
RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class HelloService : IHelloService
{
public string HelloWorld()
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
return HttpContext.Current.User.Identity.Name;
else
return "Unauthenticated Person";
}
}
}
以下是IHelloService.cs的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace MLA_Test_Service
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IHelloService" in both code and config file together.
[ServiceContract]
public interface IHelloService
{
[OperationContract]
void DoWork();
}
}
答案 0 :(得分:4)
您的实施需要与您的界面相匹配。如果您不想实现DoWork方法,则需要从实现和接口开始。
实际上,您可能只需将DoWork替换为您实际要在服务上调用的方法的名称,而是实现该方法。它应该作为如何在WCF服务上启动操作的示例。
答案 1 :(得分:2)
它简单的C#,你继承了一个接口,你必须在类中实现它的所有声明方法。
接口中存在 DoWork()
,因此请在HelloService
类中实现。
此外,只有那些方法对您的WCF服务客户端可见,该客户端将在OperationContract
中声明,即接口并标记为[OperationContract]