質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

1336閲覧

別のサーバに存在するファイルのダウンロードがアクセス拒否になる

backfever

総合スコア14

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2022/09/14 01:59

前提

AサーバにASP.net(C#)のアプリケーションを配置し、BサーバにDB(SQLSERVER)とダウンロード対象のファイルを配置しています。DBからファイルの格納パスを取得し、ファイルをダウンロードさせようとするアクセス拒否となってしまいます。

A、Bサーバ共にドメインに参加しておらず、ワークグループ構成です。

web.configにて偽装を行っています。

<identity impersonate="true" userName="test" password="test" />

アクセス権限としては「\Bサーバ\DlFiles\」に「Bサーバ\test」ユーザーのフルコントロールを追加しています。

実現したいこと

  • アクセス拒否を回避したい

ユーザや権限等を追加してみたのですが事象変わらずで、なにか参考になるサイト等でも構いませんのでご教示お願い致します。

発生している問題・エラーメッセージ

XXXXアプリケーションでサーバーエラーが発生しました。 パス’\\Bサーバ\DlFiles\XXXX.txt’へのアクセスが拒否されました。

該当のソースコード

ダウンロード部分のソースは以下の通りです。

Response.Clear(); Response.ContentType = "text/plain"; Response.HeaderEncoding = System.Text.Encoding.UTF8; Response.ContentEncoding = System.Text.Encoding.UTF8; Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode("XXXX.txt")); Response.WriteFile("\\Bサーバ\DlFiles\XXXX.txt"); Response.End();

また、ダウンロード処理の前にダウンロード対象ファイルの存在確認(System.IO.File.Exists)を行っているのですが、正常に存在を返してきています。

試したこと

ユーザや権限等(IUSR、IIS_IUSRS等)の追加

補足情報(FW/ツールのバージョンなど)

ASP.net(C#).net framework 4.5.1

Windows Server 2019 Standard (A,Bサーバ共に)

SqlServer 2019

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

自分が思い当たることは以下の通りです。

A サーバー / B サーバ両方に同一 Windows ユーザーアカウント(ID、パスワードが同じ)を設けて、そのアカウントに当該ファイルの読み取り権限は与えてますか?

ファイルの共有は無効にしてますか? XP 時代の SQL Server の話ですが、共有を有効にすると、Guest としてアクセスしているとみなされてダメだったという話があります。試してみてください。

あと、以下の記事にあるように IIS の「ユーザープロファイルの読み込み」が False になっていたのでダメだったという話もあります。デフォルトで True なのですが確認してみてください。

IIS のアプリケーションから共有フォルダにファイルを作成
https://hiromatsu.hatenablog.com/entry/2017/11/20/094348

投稿2022/09/14 02:47

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

backfever

2022/09/14 05:51

回答ありがとうございます。 > そのアカウントに当該ファイルの読み取り権限は与えてますか? 両サーバ共に偽装アカウントのtestをユーザーとして登録し権限を与えています。ただ厳密には、Aサーバは「Aサーバ/test」Bサーバは「Bサーバ/test」というユーザーを登録しています。 >ファイルの共有は無効にしてますか? こちらは確認して試してみます。ありがとうございます。 >IIS のアプリケーションから共有フォルダにファイルを作成 こちらも確認してみます。ありがとうございます。
backfever

2022/09/15 00:36

>ファイルの共有は無効にしてますか? >IIS のアプリケーションから共有フォルダにファイルを作成 両方とも設定済みでした。 偽装した場合にBサーバにアクセスするアカウントは「test」になると思っているのですが、そうではないのでしょうか?
退会済みユーザー

退会済みユーザー

2022/09/15 03:26

> 偽装した場合にBサーバにアクセスするアカウントは「test」になると思っているのですが、そうではないのでしょうか? そこは自分には分からないです。 思い付きレベルの話ですが、試しに、偽装ではなく、ワーカープロセスのアカウントを test にしてみたらどうなるでしょうか?
backfever

2022/09/16 01:59

返信が遅れてしまい申し訳ありません。 諸事情で現在、ABサーバの調査ができない状況です。 > ワーカープロセスのアカウントを test にしてみたら タイミングが取れ次第こちらの確認もしてみたいと思います。 時間が空いてしまいそうなので一度この質問はCLOSE致します。 SurferOnWwwさん回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問