SRK90 Ответов: 1

как обработать "исключение NullReferenceException не обработано пользовательским кодом" для fileupload С в C#


Я делаю примерный проект для стажировки в компании.
Согласно проекту, новый пользователь должен зарегистрировать свою учетную запись на экране регистрации..
там у нас есть возможность загрузить нашу фотографию профиля...
Я уже упоминал о кодировках загрузки фотографий ниже....

охраняемых недействительными NextLinkbutton3_OnClick(объект отправителя, EventArgs в электронной)
{
Сессия["ProfilePictureBytes"] = 0;
if (ProfilePictureFileUploader.HasFile == true)
{

byte[] br = файл.ReadAllBytes("D:/Projects/SampleProject/Images/Default Image.jpg");
Сессия["ProfilePictureBytes"] = br;

}
еще
{

System.IO.Stream fs = ProfilePictureFileUploader.PostedFile.Входной поток;
System.IO.BinaryReader br = новый System.IO.BinaryReader(fs);
байт[] profilepictureBytes = БР.ReadBytes((int32)для ФС.Длина);
Сессия["ProfilePictureBytes"] = profilepictureBytes;
}


здесь ProfilePictureFileUploader-это файловая загрузка, которую я упомянул на своей странице aspx.
Я применил сеанс с именем Session["ProfilePictureBytes"], который сохранит байты изображения. [цель сеанса["ProfilePictureBytes"] состоит в том, чтобы получить эти байты на каком-то другом экране.]
здесь,если пользователь загружает картинку,то инструмент возьмет на себя другую часть и будет делать дальнейшие вещи....но если пользователь не загружает какую-либо картинку, то картинка будет взята с моего локального диска D, и он безопасно сохранит картинку в базе данных...но если пользователь загружает любую картинку, то другая часть показывает какую-то ошибку, например "NullReferenceException был необработан пользовательским кодом" .есть идеи по этой проблеме у друзей? ....

Очень сожалею за мой незрелый английский и заранее благодарю :)

1 Ответов

Рейтинг:
1

M.Kamran Asim

Как я понимаю, вы неправильно выполнили свое условие

if (ProfilePictureFileUploader.HasFile == true) затем выберите изображение из загрузчика и установите в сеансе, в противном случае выберите изображение по умолчанию из локального расположения жесткого диска.

В вашем случае вы проверяете как

если у загрузчика есть файл
затем
выберите изображение с локального жесткого диска

еще
выберите изображение из загрузчика т. е.
ProfilePictureFileUploader.PostedFile

таким образом, в другой части вы получите нулевое исключение, так как нет никакого опубликованного файла.

Реорганизовать свой код, как

if (ProfilePictureFileUploader.HasFile == true)
{
 System.IO.Stream fs = ProfilePictureFileUploader.PostedFile.InputStream;
 System.IO.BinaryReader br = new System.IO.BinaryReader(fs);
 byte[] profilepictureBytes = br.ReadBytes((Int32)fs.Length);
 Session["ProfilePictureBytes"] = profilepictureBytes;

}
else
{

 byte[] br = File.ReadAllBytes("D:/Projects/SampleProject/Images/Default Image.jpg");
 Session["ProfilePictureBytes"] = br;

}


SRK90

У меня есть то, что вы пытаетесь имею в виду друг...да, на самом деле это правда...теперь я решил эту проблему сам...проблема возникла из-за кнопки link,потому что обратная передача происходит, когда я нажимаю соответствующую кнопку link[которая делает загрузку файла пустой]...я использовал ScriptManager и UpdatePanel, чтобы преодолеть это...в любом случае большое спасибо за ваш комментарий :)

Lalyka

Привет Раджеш
можете ли вы обновить свой код ,у меня такая же проблема

Member 12648331

Исключение NullReferenceException не обработано пользовательским кодом
У меня есть ошибка в этой строке
наконец
{
если (Конн.Состояние == ConnectionState.Открыть)
Коннектикут.Закрывать();
}