0

リモートサーバー上のファイルへのアクセス許可を必要とするアプリケーションがあります。

私のアプリはサーバー A にあり、アクセスしたいファイルはサーバー B にあります。これら 2 つのサーバーは同じドメインにあります。

サーバー B のディレクトリ用にサーバー A に仮想ディレクトリを作成しました。仮想ディレクトリの名前は FolderFromServerB で、そのパスは \ServerB\Folder です。認証にユーザーを使用しています。IIS で接続をテストすると、すべて問題ないと表示されます。

また、以下のようにアンカータグをテストファイルに入れると、ファイルにアクセスでき、コンテンツがページに表示されます。

<a href="FolderFromServerB/test.txt">Test file</a> -->  **This works**

しかし、私の問題は、そのファイルが存在するかどうかを確認するためにコードを使用すると、常に False が返されることです。私のコードは以下のようなものです:

FileInfo fi = new FileInfo(@"\FolderFromServerB/test.txt"); -->これはうまくいきません

Response.Write(fi.Exists); --> これは常に「False」です

サーバーBのユーザーとネットワークサービスと全員と管理者に「フルコントロール」権限を付与しましたが、どちらも機能しませんでした。

どうすればそれを機能させることができますか?

それは先週働いていました。サーバー自体が更新され、いくつかの更新が行われたと思いますが、回避策が見つかりませんでした。私は今とても必死で、すべてのコードを変更し、それを機能させるために多くの時間を費やさなければなりません。

4

2 に答える 2

0

ASP.Net アプリケーションの現在の実行フォルダーはアプリケーションのフォルダーではなく、c:\windows\system32.

オブジェクトを作成するときはFileInfo、 を読み取ろうとしますc:\windows\system32\FolderFromServerB\test.txt

リンクは現在の<a href="FolderFromServerB/test.txt">ページに対して相対的であるため、機能します (ページが別のディレクトリにある場合は機能しません)。

探しているファイルがアプリケーション ディレクトリの下にある場合は、次を使用して仮想パスを物理パスに変換できます。

string actualFilePath = HttpContext.Current.Server.MapPath("~/FolderFromServerB/test.txt");
FileInfo fi = new FileInfo(actualFilePath);
于 2014-10-13T14:16:12.133 に答える
0

web.config にある回避策を見つけました:

<identity impersonate="true"  userName="{domain}\{username}" password="{password}"/>

File.Exist() を数か月使用しましたが、突然なくなり、機能しなくなりました。その理由はわかりません。しかし、それは上記の解決策です。

于 2014-10-13T13:40:08.537 に答える