C# 如何在ASMX webservice中获取用户名的用户ID

C# 如何在ASMX webservice中获取用户名的用户ID,c#,asp.net,web-services,userid,C#,Asp.net,Web Services,Userid,我试图通过web方法将用户的帖子存储到access数据库中。我想存储登录用户的用户名、用户的帖子和帖子日期时间 到目前为止,我可以通过硬编码存储现有的用户帖子。但是我想存储任何登录用户的帖子。我被告知需要获取用户名的userID 因此,我找到并尝试添加以下代码: //GetUser() returns current user information MembershipUser user = Membership.GetUser(); //Returns the UserID and con

我试图通过web方法将用户的帖子存储到access数据库中。我想存储登录用户的用户名、用户的帖子和帖子日期时间

到目前为止,我可以通过硬编码存储现有的用户帖子。但是我想存储任何登录用户的帖子。我被告知需要获取用户名的userID

因此,我找到并尝试添加以下代码:

//GetUser() returns current user information
MembershipUser user = Membership.GetUser();

//Returns the UserID and converts to a string
string UserID = user.ProviderUserKey.ToString();
当我尝试使用断点进行调试时,第一个断点还可以。但是对于第二个,VS2010说“对象引用未设置为对象的实例”。我如何修复它

VS建议添加“新”,但没有效果。它还建议捕获NullReferenceException,但我不知道如何使用它们提供的代码:

public class EHClass
{
    void ReadFile(int index)
    {
        // To run this code, substitute a valid path from your local machine
        string path = @"UsersDB_in_App_Data";
        System.IO.StreamReader file = new System.IO.StreamReader(path);
        char[] buffer = new char[10];
        try
        {
            file.ReadBlock(buffer, index, buffer.Length);
        }
        catch (System.IO.IOException e)
        {
            Console.WriteLine("Error reading from {0}. Message = {1}", path, e.Message);
        }

        finally
        {
            if (file != null)
            {
                file.Close();
            }
        }
        // Do something with buffer...
    }

}

您能给我一些建议,说明我需要做什么,或者提供另一种方法来获取用户名的userID吗?

您得到的异常意味着myObject(当前用户)为null或者myObject.ProviderUserKey为null。我建议在设置myObject之后到达断点时,应该检查myObject的值,看看它是否为null


根据实际为空的内容,将影响查找问题的位置。如果MyObjor为NULL,那么您需要查看代码以获取当前用户,并检查是否有人确实登录等。如果ProviderUserKey为NULL,请考虑是否需要此ID,或者最好直接使用用户名,检查成员资格提供程序是否以任何有意义的方式实际提供了该属性。

您得到的异常表示myObject(当前用户)为null或myObject.ProviderUserKey为null。我建议在设置myObject之后到达断点时,应该检查myObject的值,看看它是否为null


根据实际为空的内容,将影响查找问题的位置。如果MyObjor为NULL,那么您需要查看代码以获取当前用户,并检查是否有人确实登录等。如果ProviderUserKey为NULL,请考虑是否需要此ID,或者最好直接使用用户名,检查成员资格提供程序是否以任何有意义的方式实际提供了该属性。

您没有指明您拥有的成员资格用户类型,但完全取决于基础数据存储

例如,sql成员资格提供程序将此值存储为GUID

如果此属性可能不包含任何有用的数据,则需要在访问它之前测试它是否存在:

//Returns the UserID and converts to a string
string UserID;
if ((myObject != null) && (myObject.ProviderUserKey != null)) {
    UserId = myObject.ProviderUserKey.ToString();
} else {
    UserId = String.Empty;
}
此外,除非您在直接的asmx web服务中使用WSE,否则我认为memebership提供程序不会有任何有效的数据可供操作


如果是这种情况,您可能需要切换到WCF或实现WSE(不推荐)。

您没有指明您拥有哪种类型的成员身份用户,但完全取决于基础数据存储

例如,sql成员资格提供程序将此值存储为GUID

如果此属性可能不包含任何有用的数据,则需要在访问它之前测试它是否存在:

//Returns the UserID and converts to a string
string UserID;
if ((myObject != null) && (myObject.ProviderUserKey != null)) {
    UserId = myObject.ProviderUserKey.ToString();
} else {
    UserId = String.Empty;
}
此外,除非您在直接的asmx web服务中使用WSE,否则我认为memebership提供程序不会有任何有效的数据可供操作


如果是这种情况,您可能需要切换到WCF或实现WSE(不推荐)。

相反,您可以直接使用此代码

string UserID = MembershipUser.ProviderUserKey.ToString();

相反,您可以直接使用此代码

string UserID = MembershipUser.ProviderUserKey.ToString();