最近、ステージング サーバーを新しいホスティング プロバイダーに移行し、ホスティング アカウント コントロール パネル内からフォーム認証をセットアップして、クローラーや不要な訪問者がアクセスできないようにしました。
現在、HTTP 401 Unauthorized が原因で失敗しているサイトのロジックの少なくとも 1 つの領域を見つけています。
サイトのユーザー向けに PDF を生成するサイトのセクションがあります。HTMLからPDFへの変換です。ソース ページは、C# で記述された .ASPX です。http://www.mysite.com/mypage.aspxなどの URL を使用して ASPX ファイルをダウンロードし、.HTM を生成します。
サイトがパスワードで保護されたので、これらのルーチンは HTTP 401 で失敗し、これを克服する方法がわかりません。何もアクセスしたくないので、サイト認証を削除したくありません。
内部ルーチンが必要に応じてローカルページにアクセスできるように、これを回避する方法を誰か教えてもらえますか?
編集
もう少し詳しく。これは単なる開発サイトであるため、ホスティング プロバイダーのコントロール パネル内から簡単な設定を行い、Folder Security を有効にしました。ルート フォルダー「/」を追加し、2 人のユーザーを作成しました。これはうまくいきます。サイトにアクセスすると、フォーム認証ダイアログ ボックスと思われるものが表示されます。ユーザー名とパスワードを入力すると、アクセスが許可されます。
この構成により、ルート /' Web サイト フォルダーに 4 つのファイルが作成されました。それらは、.htaccess、.htpasswd、.htgroup、および .htfolders です。このサイトにはたくさんのフォルダがあります。このようにそれぞれを構成するのは、時間がかかり面倒です。したがって、「/」ルート構成。
私たちの目的は、クローラー/検索エンジン、およびホスト名に出くわしたカジュアルな訪問者へのアクセスをブロックすることです.
この構成により、サイトのごく一部が http:// 経由で独自のページにアクセスできなくなり、HTTP 401 エラーが発生するという副作用が発生します。私がやりたいのは、 を使用してこれらすべてを構成し<security><ipSecurity>
、自分と Web サイトを除くすべてをブラックリストに登録することですが、プロバイダーはこれを行うために必要な IP モジュールをインストールしません。
HTTP 401 を受信している C# コードは次のとおりです。
webrequest = (HttpWebRequest)WebRequest.Create(url);
webrequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)";
webrequest.Timeout = 600000;
resp = webrequest.GetResponse();
私も試しました:
CredentialCache credCache = new CredentialCache();
credCache.Add(new Uri(url), "Basic", new NetworkCredential("username", "password"));
webrequest = (HttpWebRequest)WebRequest.Create(url);
webrequest.Credentials = credCache;
webrequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)";
webrequest.Timeout = 600000;
resp = webrequest.GetResponse();
どちらのメソッドも HTTP 401 Unauthorized を受け取ります。このセキュリティの問題は実際のサイトには存在しないため、C# コードでこれを修正したくありません。必要に応じて、web.config や .ht* ファイルでこの構成を実行したいと思います。
だから、私は疑問に思っています.web.configに配置できるものはありますか? これがセットアップされている方法で誰かが問題を見ていますか? (それ以外は動作していません! :P)