从C#客户端访问WCF服务中的方法时遇到问题

时间:2013-03-22 01:41:17

标签: c# asp.net .net wcf web-services

我一直致力于一项服务,用于身份验证以及为Android客户端和桌面客户端发送和接收数据。该服务基于之前的服务,该服务是为需要使用SQL成员资格提供程序的身份验证服务的人员创​​建的模板。

所以项目分为3.一个用于公共授权类,另一个用于WCF服务,第三个是我在C#中启动的客户端。

我的问题是我无法访问客户端中添加到服务/接口中的任何新方法。我可以访问所有其他的,除了新的。它也没有显示在intellisense中。我有一个用于引用项目的Web引用。我不确定为什么它是Web引用而不是服务引用,直到我很快意识到它不允许由于授权而添加服务引用。它基本上只是一遍又一遍地要求凭证。

以下是该服务的一个示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Security.Permissions;
using System.ServiceModel.Activation;

namespace DevLake.BasicAuth.Service
{
    // AspNetCompatibilityRequirements is needed to capture the HttpContext.Current in establishing authorization
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class BasicAuthService : IBasicAuthService
    {
        public string TestServiceOK()
        {
            return "Basic Auth Service Working";
        }

        [PrincipalPermission(SecurityAction.Demand, Role = "Role1")]
        public string TestRoleAccess()
        {
            return "Role can access";
        }

        public string TestMyService()
        {
            return DateTime.Now.ToString();
        }

        public void TestError()
        {
            throw new System.Exception("Test Exception");
        }
    }
}

以下是匹配界面的示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace DevLake.BasicAuth.Service
{
    [ServiceContract]
    public interface IBasicAuthService
    {
        [OperationContract]
        string TestServiceOK();

        [OperationContract]
        string TestRoleAccess();

        [OperationContract]
        string TestMyService();

        [OperationContract]
        void TestError();

        }
}

我用来调用服务中方法的代码的快速示例:

private void btnTestService_Click(object sender, RoutedEventArgs e)
        {

            try
            {
                wsBasicAuthService.BasicAuthService c = new wsBasicAuthService.BasicAuthService();
                c.Credentials = new NetworkCredential(txtUserName.Text, txtPassword.Password);
                MessageBox.Show(c.TestServiceOK());

            }
            catch (System.Exception ex)
            {
                MessageBox.Show("Error: " + ex.Message);
            }
        }

任何人都可以看到任何可能导致此问题的问题吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试更新参考?您应该能够右键单击引用并更新。如果这不起作用,请将其删除并重新添加,看看是否有效。