Det är felmeddelandet jag får vid en import av en bild. Koden: Om du berättar vilken rad felet uppstår på blir det betydligt enklare att leta fel... Dessvärre visas inget i browsern trots att jag har debug=true. Var tvungen att skriva felhantering i codebehind för att få fram det. Här är hela felmeddelandet: då får du visa koden där Här kommer all kod :) Hittade felen :)Object reference not set to an instance of an object.
<code>
HttpPostedFile upfile = File1.PostedFile;
if (upfile.ContentLength != 0)
{
int FileLength = upfile.ContentLength;
byte[] FileByteArray = new byte[FileLength];
Stream StreamObject = upfile.InputStream;
StreamObject.Read(FileByteArray, 0, FileLength);
string ImageType = File1.PostedFile.ContentType;
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Rekrytering"].ConnectionString);
cmd = new SqlCommand("InsertProfilBildSP", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ImageType", ImageType);
cmd.Parameters.AddWithValue("@Bild", FileByteArray);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
else
{
Msg.Text = "Du måste välja bild.";
}
</code>
Hoppas det är någon som kan hjälpa :)Sv: Object reference not set to an instance of an object.
/JohanSv:Object reference not set to an instance of an object.
Message: Object reference not set to an instance of an object.
Trace: at kund.InsertProfilBild()
Source: kund
Felhanteringen fungerar, har testat på andra funktioner där all info har skrivits ut.Sv: Object reference not set to an instance of an object.
kund.InsertProfilBild()
anropas istället...Sv:Object reference not set to an instance of an object.
Codebehind:
<code>
public void InsertProfilBild()
{
try
{
HttpPostedFile upfile = File1.PostedFile;
if (upfile.ContentLength != 0)
{
int FileLength = upfile.ContentLength;
byte[] FileByteArray = new byte[FileLength];
Stream StreamObject = upfile.InputStream;
StreamObject.Read(FileByteArray, 0, FileLength);
string ImageType = File1.PostedFile.ContentType;
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Rekrytering"].ConnectionString);
cmd = new SqlCommand("InsertProfilBildSP", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ImageType", ImageType);
cmd.Parameters.AddWithValue("@Bild", FileByteArray);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
else
{
Msg.Text = "Du måste välja bild.";
}
}
catch (Exception e)
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Fel"].ConnectionString);
cmd = new SqlCommand("Error", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Funktion", "InsertProfilBild");
cmd.Parameters.AddWithValue("@Applikation", "Rekrytering");
cmd.Parameters.AddWithValue("@Datum", DateTime.Now);
cmd.Parameters.AddWithValue("@Message", e.Message.ToString());
cmd.Parameters.AddWithValue("@Trace", e.StackTrace.ToString());
cmd.Parameters.AddWithValue("@Source", e.Source.ToString());
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
</code>
Form:
<code>
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
InsertProfilBild();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="File1" type="file" /><br />
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> </div>
</form>
</body>
</html>
</code>
Stored procedure:
<code>
ALTER PROCEDURE dbo.InsertProfilBildSP
(
@ImageType Varchar(50),
@Bild image
)
As
Insert Into Login (ImageType, Bild)
Values (ImageType, Bild)
</code>Sv: Object reference not set to an instance of an object.
Dels kontrollen om filen var vald skulle jag ha i aspx-filen, inte i codebehind. Dels hade jag glömt sätta runat="server" på input. Nu fungerar det. Tack alla som försökte :)