3

RSS フィードを発行するイントラネットがあります。Windows ドメイン環境内の同じ IIS サーバーでホストされている別のイントラネット サイトからその RSS フィードを使用しようとしています。

どちらのサイトにもある

<authentication mode="Windows">

また、匿名認証は無効になっています。

ローカルでの開発 (ドメインではなく Windows 認証) では、次のように動作します。

var request = HttpWebRequest.Create(feedUrl);
request.Credentials = CredentialCache.DefaultNetworkCredentials;

XElement f;
using (var response = request.GetResponse())
{
     var reader = new XmlTextReader(response.GetResponseStream()); 
     f = XElement.Load(reader);
}
return f;

ただし、これを本番環境 (Windows 2008) にデプロイすると、401 Unauthorized 例外が発生します。ドメイン ユーザーとしてログインしている場合はブラウザーで問題なく RSS フィードを表示できますが、コードを使用してアクセスしようとすると認証されないようです。

私も試しました:

request.Credentials = New System.Net.NetworkCredential("myUser","myPass","myDomain");

しかし、まだ 401 Unauthorized です。私が見落としていることについて、誰かが考えを提供できますか?

4

1 に答える 1

0

VS でローカルに実行している場合はCredentialCache.DefaultNetworkCredentialsユーザー名を取得しますが、このクライアントを Web サーバーで実行している場合は、アプリケーションの実行に使用されたアカウントを返します。これは通常、Web サーバーに対してローカルな NetworkService アカウントです。そのため、このクライアントを使用してリモート サービスに対して認証しようとすると、401 が返されます。そのため、リモート サービスへのアクセス許可を持つドメイン アカウントで実行するように ASP.NET MVC クライアント アプリケーションを構成できます。これは、IIS マネージャーのアプリケーション プールの高度なプロパティで行うことができます。

于 2013-02-21T21:40:25.120 に答える