2011-04-21 4 views
4

Je vois cette erreur:Impossible de jeter l'objet de type « System.Web.Profile.DefaultProfile » taper « ProfileCommon »

Impossible de jeter l'objet de type « System.Web.Profile.DefaultProfile » taper 'ProfileCommon'.

le code suivant:

ProfileCommon p = (ProfileCommon) ProfileCommon.Create (TextUsername.Text, true);

Je ne sais pas pourquoi ...

+0

J'avoir mis à jour la réponse. –

+0

Question connexe déjà répondu ici: http://stackoverflow.com/questions/4154179/what-is-webprofile-useful-for/4155101#4155101 – IrishChieftain

+0

Qu'est-ce que WebProfile? – TeaLeave

Répondre

3

D'accord avec theChrisKent regard de .It comme problème dans le web.config

Découvrez l'exemple suivant, Comment obtenir ProfileCommon objet dans asp.net

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="GetProfile" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     User Name:<asp:TextBox ID="txtUserName" runat="server"/> 
     <asp:Button ID="cmdGet" runat="server" OnClick="cmdGet_Click" Text="Get Profile" /><br /> 
     <asp:Label ID="lbl" runat="server" Text=""/> 
    </div> 
    </form> 
</body> 
</html> 

fichier: Default.aspx.cs

using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 

public partial class GetProfile : System.Web.UI.Page 
{ 
    protected void cmdGet_Click(object sender, EventArgs e) 
    { 
    ProfileCommon profile = Profile.GetProfile(txtUserName.Text); 
     if (profile.LastUpdatedDate == DateTime.MinValue) 
     { 
      lbl.Text = "No user match found."; 
     } 
     else 
     { 
      lbl.Text = "This user lives in " + profile.FirstName; 
     } 
    } 
} 

fichier: Web .config

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <profile> 
     <properties> 
     <add name="FirstName" type="String" serializeAs="Binary"/> 
     <add name="LastName" type="String" serializeAs="Xml"/> 
     <add name="DateOfBirth" type="DateTime" serializeAs="String"/> 
     </properties> 
    </profile> 
    </system.web> 
</configuration> 

EDIT

Cet exemple ne fonctionne que lorsque le type de projet est website.If vous voulez utiliser l'objet ProfileCommon dans l'application Web puis passez par le lien suivant

Converting Profile Object Code

EDIT -II

Selon votre commentaire, lien suivant pourrait vous aider

ASP.NET Profiles in Web Application Projects

+0

Web. Config ne fonctionne pas ici car il s'agit d'une application web NOT et site Web donc je dois définir une classe héritée de Profilebase – TeaLeave

+0

Je veux poster mon code de fichier CS ici mais il dit qu'il dépasse la limite de caractères. Comment puis-je publier le code dans un bloc? – TeaLeave

+1

@Californicated vous pouvez éditer votre question et y coller votre code. Vous pouvez le formater en utilisant le bouton {} – theChrisKent

1

Vérifiez votre web.config si aucune section <profile /> est définie, ASP.NET crée un objet de profil de type DefaultProfile qui peut causer votre erreur. Ce qui précède ne s'applique qu'aux sites Web et non aux applications Web. Puisque vous avez indiqué que vous utilisez une application Web que vous devez savoir:

  • Visual Studio ne génère pas des objets ProfileCommon pour les applications Web
  • Vous devez accéder à vos propriétés de profil en utilisant ProfileBase.GetPropertyValue(PropertyName)

Alors vous pouvez obtenir une propriété comme celui-ci (exemple ci-dessous de l'article):

DateTime DOB = Convert.ToDateTime(HttpContext.Current.Profile.GetPropertyValue("DateOfBirth")); 

Voir cet article pour plus d'informations/Exemp les: http://weblogs.asp.net/anasghanem/archive/2008/04/12/the-differences-in-profile-between-web-application-projects-wap-and-website.aspx

+0

Je ne peux pas l'utiliser web.config. Je dois hériter de Profilebase dans le fichier .CS – TeaLeave

+0

@Californicated J'ai mis à jour ma réponse à l'adresse Web Applications – theChrisKent

+0

Je pense que j'aurais dû être plus précis; – TeaLeave

Questions connexes