В экземпляре объекта не задана ссылка на объект? - PullRequest
2 голосов
/ 20 мая 2009

Я написал эти строки, но у меня есть NullReferenceException. Пожалуйста, помогите мне, как это исправить!

string FullPath = TempPath + FileName;
System.Drawing.Image Adimg = null;
Adimg = System.Drawing.Image.FromFile(MapPath(FullPath));

Я поместил эти строки в метод Public bool, а TempPath является свойством класса, а FileName является вводом для метода.

exception Detail:
System.NullReferenceException was unhandled by user code
  Message="Object reference not set to an instance of an object."
  Source="System.Web"
  StackTrace:
       at System.Web.UI.Page.MapPath(String virtualPath)
       at FileIO.HasValidAttributes(String FileName) in g:\MyProjects\ASP.net Projects\ADBridge\adengine2\App_Code\FileIO.cs:line 44
       at UploadPage.<Page_Load>b__0(Object sender1, EventArgs e1) in g:\MyProjects\ASP.net Projects\ADBridge\adengine2\UploadPage.aspx.cs:line 29
       at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
       at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
       at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
  InnerException: 


У меня нет времени!

Ответы [ 4 ]

2 голосов
/ 20 мая 2009

Попробуйте вместо этого вызвать MapPath для объекта Server:

HttpContext.Current.Server.MapPath(FullPath)
2 голосов
/ 20 мая 2009

Вот несколько советов:

  1. Используйте Path.Combine для построения путей из отдельных частей
  2. Убедитесь, что FullPath ссылается на файл, который
    • присутствует на диске
    • Доступно для чтения веб-процессу (т. Е. Не выполняет веб-процесс под учетной записью системы или аналогичным способом)
0 голосов
/ 20 мая 2009

Попробуйте это:

string fullPath = Path.Combine(TempPath, FileName);
System.Drawing.Image adimg = null;
if (!String.IsNullOrEmpty(fullPath))
{
    string serverPath = HttpContext.Current.Server.MapPath(fullPath);
    if (!String.IsNullOrEmpty(serverPath))
        adimg = System.Drawing.Image.FromFile(serverPath);
}

Убедитесь, что MapPath дает вам то, что вы ожидаете.

0 голосов
/ 20 мая 2009

Читая «Fullpath = TempPath + FileName», кажется, что вы пытаетесь передать физический адрес в качестве виртуального адреса?

Это так? Можете ли вы дать нам то, что вы передаете в качестве входных данных для этой функции, если это не так? Если это физический путь, нет необходимости использовать MapPath.

См. здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...