2009-05-19 18 views
2

私はこれらの行を書きましたが、私はNullReferenceExceptionを持っています。それを修正する方法を教えてください!
オブジェクト参照がオブジェクトのインスタンスに設定されていませんか?

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

私は公開するbool方法でこれらの行を入れて、TEMPPATHはクラスプロパティであり、ファイル名はメソッドの入力です。

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: 


私は時間がありません!

+0

あなたのTempパスとファイル名は何ですか?スタックトレースから、問題のある場所が見つかる – Fry

答えて

2

を参照してください:

HttpContext.Current.Server.MapPath(FullPath) 
2

ここではいくつかのヒントです:フルパスがで読み取り可能ディスク

    • 存在するファイルを参照することを確認して個片
    • からのパスを構築するために

      1. 使用Path.Combineウェブプロセス(すなわち、システムアカウントまたは類似のウェブプロセスを実行していない)
  • +0

    string FullPath = Path.Combine(TempPath、FileName); が動作していません。問題はまだ存在する!私のファイルがディスク上のPeresentであることに注意してください。 – mahdiahmadirad

    +0

    文字列FullPath = Path.Combine(TempPath、FileName); が動作していません。問題はまだ存在する!私のファイルがディスク上のPeresentであることに注意してください。 – mahdiahmadirad

    +0

    Webサービスユーザーがファイルにアクセスできることを確認しましたか? –

    0

    "Fullpath = TempPath + FileName"と読むと、物理アドレスを仮想アドレスとして渡そうとしているようですか?

    これが該当しますか?そうでない場合、この関数への入力として渡しているものを私たちに与えることができますか?物理パスの場合は、MapPathを使用する必要はありません。

    ではなくサーバーのオブジェクトにMapPathのを呼び出してみhere

    +0

    私のTempPath:プライベート文字列_TempPath = "〜/ Images /"; 公開ストリングTempPath { get {return _TempPath; } セット{_TempPath =値; } } 私のファイル名: "imdb.png" – mahdiahmadirad

    0

    はこれを試してみてください:

    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はあなたが期待している何を与えていることを確認します。

    関連する問題