- PR -

クライアントからサーバーへファイルのコピー(vb.net)

1
投稿者投稿内容
ぽぽぴ
常連さん
会議室デビュー日: 2005/06/17
投稿数: 23
投稿日時: 2005-08-03 15:30
FileFieldによって、選択したファイルを
サーバー(サーバー名:SERVER)の共有がかかっているTestと
いうフォルダにfileという名前で保存したいのです。
下記のコードで、実行すると、サーバー上では、正常に動くのですが、
クライアントから実行すると、ランタイムエラーが発生してしまいます。
(共有フォルダのアクセス権は、everyone フルコントロールです。)
なぜこのようなエラーがでるのかわかりません。。。
ご教授宜しくお願い致します。
説明不足の点がございましたら、ご指摘ください。

Dim SaveLocation As String = "\\SERVER\Test\file"
File1.PostedFile.SaveAs(SaveLocation)
(File1は、FileFieldです。)
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-08-03 18:10
何と言う実行時エラーが発生するのかくらい書こうぜ。

ファイルアクセス権は設定されていても、ファイル共有アクセス権は設定されていないと言う落ちは無いよね?
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
ぽぽぴ
常連さん
会議室デビュー日: 2005/06/17
投稿数: 23
投稿日時: 2005-08-04 10:39
大変申し訳ございませんでした。。。
エラーですが、下記のように表示されます。

アクセス権に関しましては、ファイルアクセス権およびファイル共有アクセス権共に、
everyoneのフルコントロールに設定しております。

説明 : サーバーでアプリケーション エラーが発生しました。このアプリケーションの現在のカスタム エラー設定では、セキュリティ上の理由により、アプリケーション エラーの詳細をリモート表示できません。 ただし、ローカル サーバー コンピュータで実行されているブラウザで表示することはできます。

詳細: このエラー メッセージの詳細をリモート コンピュータで表示できるようにするには、現在の Web アプリケーションのルート ディレクトリにある "web.config" 構成ファイル内に、<customErrors> タグを作成してください。その後で、この <customErrors> タグで "mode" 属性を "off" に設定してください。

<!-- Web.Config 構成ファイル -->

<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>


メモ: 現在表示されているエラー ページをカスタム エラー ページ に変更するには、アプリケーションの <customErrors> 構成タグの "defaultRedirect" 属性をカスタム エラー ページ URL に置き換えます。

<!-- Web.Config 構成ファイル -->

<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
</system.web>
</configuration>

MARU
常連さん
会議室デビュー日: 2005/02/16
投稿数: 35
投稿日時: 2005-08-04 11:51
そのプログラムはどの権限(ユーザで)で動かしていますか?
かえで
常連さん
会議室デビュー日: 2004/09/16
投稿数: 38
投稿日時: 2005-08-04 12:33
こんにちわ

まず甕星さんがおっしゃってるように、エラーの詳細を明らかにしましょう。
エラーで表示された説明に従ってConfigファイルを訂正しましょう。
それで実行すれば、ちゃんとエラー詳細が表示されるはずです。

次にMARUさんが質問にも挙げてますが、それはどのユーザで実行していますか?
ASPNETユーザになっていませんか?
ASPNETユーザであれば、むしろ【偽装】を行ったほうがいいと思います。


ぽぽぴ
常連さん
会議室デビュー日: 2005/06/17
投稿数: 23
投稿日時: 2005-08-06 11:21
誠に申し訳御座いませんでした。

かえでさんのおっしゃるとおり、Configファイルを訂正し、エラーの詳細を確認しましたら、
ファイルのアップの部分ではない場所で、エラーが発生しておりました。

Dim fi As New System.IO.FileInfo(System.IO.Path.GetFullPath(File1.PostedFile.FileName))
Dim size As Long
size = fi.Length ←この部分でエラー
If size > 4194304 Then
Label3.Text = "サイズが大きすぎます。"
Exit Sub
End If


開発環境では、正常に動作しているため、なにが悪いのかわかりません。。
どうぞよろしくお願い致します。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-08-06 12:02
だからなんと言う例外が起こっているのか書こうって・・・(^^:
引用:

ぽぽぴさんの書き込み (2005-08-06 11:21) より:
Dim fi As New System.IO.FileInfo(System.IO.Path.GetFullPath(File1.PostedFile.FileName))
Dim size As Long
size = fi.Length ←この部分でエラー


FileInfo.Lengthで例外が発生するということは「ファイルが存在しない」か「アクセス権がない」と言う事だと思われます。どちらの例外が発生しているのか確認して、対策してください。
ぽぽぴ
常連さん
会議室デビュー日: 2005/06/17
投稿数: 23
投稿日時: 2005-08-08 09:39
何度も何度も申し訳ございません・・・。

助言を色々とありがとうございました。
おかげで、下記のように変更することで、解決いたしました。
size = File1.PostedFile.ContentLength
1

スキルアップ/キャリアアップ(JOB@IT)