以下のコードは、私のウェブサイトで写真を挿入するために使用されています。私のコンピューターでは写真を挿入できますが、リモートマシンに転送するとエラーメッセージが表示されます。コードは次のとおりです。
Protected Sub dvPictureInsert_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertedEventArgs) Handles dvPictureInsert.ItemInserted
'If the record was successfully inserted, save the picture
If e.AffectedRows > 0 Then
'Determine the maximum pictureID for this user
Dim results As DataView = CType(maxPictureIDDataSource.Select(DataSourceSelectArguments.Empty), DataView)
Dim pictureIDJustAdded As Integer = CType(results(0)(0), Integer)
'Reference the FileUpload control
Dim imageUpload As FileUpload = CType(dvPictureInsert.FindControl("imageUpload"), FileUpload)
If imageUpload.HasFile Then
Dim baseDirectory As String = Server.MapPath("~/UploadedImages/")
imageUpload.SaveAs(baseDirectory & pictureIDJustAdded & ".jpg")
End If
エラーメッセージは次のとおりです。
「/please-god」アプリケーションでサーバー エラーが発生しました。パス「D:\Hosting\4423045\html\please-god\UploadedImages\3.jpg」へのアクセスが拒否されました。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細: System.UnauthorizedAccessException: パス 'D:\Hosting\4423045\html\please-god\UploadedImages\3.jpg' へのアクセスが拒否されました。
ASP.NET は、要求されたリソースへのアクセスを許可されていません。リソースへのアクセス権を ASP.NET 要求 ID に付与することを検討してください。ASP.NET には、アプリケーションが偽装していない場合に使用されるベース プロセス ID (通常、IIS 5 では {MACHINE}\ASPNET、IIS 6 ではネットワーク サービス) があります。アプリケーションが を介して偽装している場合、ID は匿名ユーザー (通常は IUSR_MACHINENAME) または認証された要求ユーザーになります。
ファイルへの ASP.NET アクセスを許可するには、エクスプローラーでファイルを右クリックし、[プロパティ] を選択して、[セキュリティ] タブを選択します。[追加] をクリックして、適切なユーザーまたはグループを追加します。ASP.NET アカウントを強調表示し、必要なアクセスのボックスをオンにします。
ソース エラー:
Line 21: If imageUpload.HasFile Then Line 22:
Dim baseDirectory As String = Server.MapPath("~/UploadedImages/") Line 23:
imageUpload.SaveAs(baseDirectory & pictureIDJustAdded & ".jpg") Line 24: End If Line 25 : End If ソース ファイル: D:\Hosting\4423045\html\please-god\PhotoAdmin\Default.aspx.vb 行: 23スタックトレース:
[UnauthorizedAccessException: パス 'D:\Hosting\4423045\html\please-god\UploadedImages\3.jpg' へのアクセスが拒否されました。]
System.IO.__Error.WinIOError(Int32 errorCode, String MaybeFullPath) +7715167 System.IO .FileStream.Init(文字列パス、FileMode モード、FileAccess アクセス、Int32 権限、Boolean useRights、FileShare 共有、Int32 bufferSize、FileOptions オプション、SECURITY_ATTRIBUTES secAttrs、String msgPath、Boolean bFromProxy) +1162
System.IO.FileStream..ctor(Stringパス、FileMode モード、FileAccess アクセス、FileShare 共有、Int32 bufferSize、FileOptions オプション、String msgPath、Boolean bFromProxy) +61 System.IO.FileStream..ctor(String パス、FileMode モード) +55
System.Web.HttpPostedFile.SaveAs(文字列ファイル名) +99
System.Web.UI.WebControls.FileUpload.SaveAs(文字列ファイル名) +23
PhotoAdmin_Default.dvPictureInsert_ItemInserted(オブジェクト送信者、DetailsViewInsertedEventArgs e) in D:\Hosting\4423045\html\please-god\PhotoAdmin\Default.aspx.vb:23 System.Web.UI.WebControls.DetailsView.OnItemInserted(DetailsViewInsertedEventArgs e) +108
System.Web.UI.WebControls.DetailsView.HandleInsertCallback(Int32 影響を受ける行、例外 ex) +69
System.Web.UI.DataSourceView.Insert(IDictionary 値、 DataSourceViewOperationCallback コールバック) +134
System.Web.UI.WebControls.DetailsView.HandleInsert(String commandArg, Boolean causeValidation) +274 System.Web.UI.WebControls.DetailsView.HandleEvent(EventArgs e, Boolean causeValidation, String validationGroup) +676
System.Web.UI.WebControls.DetailsView.OnBubbleEvent(オブジェクト ソース、EventArgs e) +95
System.Web.UI.Control.RaiseBubbleEvent(オブジェクト ソース、EventArgs 引数) +37
System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent(オブジェクト ソース、EventArgs e) +113
System.Web.UI.Control.RaiseBubbleEvent(オブジェクト ソース、EventArgs args) +37
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +118
System.Web.UI.WebControls .LinkButton.RaisePostBackEvent(String eventArgument) +135
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +175
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) + 1565