2009-07-13 15 views
1

を取得、私は次のエラーが表示されますASP.NET MVC-とTFS:私は私のMVCアプリケーションのにHomeControllerにMicrosoft.TeamFoundation.Client.TeamFoundationServerオブジェクトを作成しようとするとエラーTF30076

TF30076: The server name {TfsServerName} provided does not correspond to a server URI that can be found. Confirm that the server name is correct.

I MVCアプリケーションのWindows認証を使用しているので、Controller.Userプロパティはドメインのログイン名{domain \ username}として設定されています。

Visual Studio開発サーバーを使用してデバッグしたとき、コードは正常に機能しました。私はIISで仮想ディレクトリを使用し始めた後、コードの実行は前述のエラーを返すようになった。

私はVisual Studio/TFS 2008(v9.0)、Windows XP環境、およびASP.NET MVC 1.0を使用しています。

例外:

Microsoft.TeamFoundation.TeamFoundationInvalidServerNameException: TF30076: The server name {xxxx} provided does not correspond to a server URI that can be found. Confirm that the server name is correct. at Microsoft.TeamFoundation.Client.TeamFoundationServer.GetUriForName(String name) at Microsoft.TeamFoundation.Client.TeamFoundationServer.get_Uri() at Microsoft.TeamFoundation.Client.CheckAuthenticationProxy..ctor(TeamFoundationServer server) at Microsoft.TeamFoundation.Client.TeamFoundationServer.Authenticate(Boolean useProvider, ICredentialsProvider provider) at Microsoft.TeamFoundation.Client.TeamFoundationServer.Authenticate() at Portal.TfsHelper.AuthenticateTfsServer() in D:\Portal\Portal\Models\TfsHelper.cs:line 99

例外をスローするコードを以下に示します。なぜこれが起こっているの

try 
{ 
    // authenticate before using tfs server 
    //TfsServer is created using the following: TfsServer = new TeamFoundationServer("server-name"); 
    if (!TfsServer.HasAuthenticated) 
    { 
     TfsServer.Authenticate(); 
     _hasAuthenticated = true; 
    } 
} 
catch (Exception ex) 
{ 
#warning: temporary error handling for TFS authentication 
    String exString = ex.ToString(); 
    throw new Exception(ex.Message, ex.InnerException); 
} 

任意の考えを? "RegisteredServers.AddServer(" サーバ名 "" http://server-name:8080 ")を呼び出した後に現れる

例外;":

System.Security.SecurityException:要求されたレジストリアクセスは許可されていません。 Microsoft.TeamFoundationでMicrosoft.Win32.RegistryKey.OpenSubKeyでSystem.ThrowHelper.ThrowSecurityException(ExceptionResourceリソース) (文字列名、ブール書き込み可能)Microsoft.TeamFoundation.Client.RegisteredServers.OpenCurrentUser(ブール書き込み可能な、ブールshouldCreate)で で D:\ Portal \ Portal \ Controllers \ HomeController.cs内のPortal.Controllers.HomeController..ctor()の :行42 失敗したアセンブリのゾーンは、次のとおりです。 : MyComputer

+0

これらのAPIは必ずしもサーバーアプリケーションで呼び出されるように設計されているわけではありませんので、軽く踏み込んで漏れや誤って共有されている接続を注意してください。 –

答えて

2

いくつかの試み:

  • あなたはフレンドリ名または実際の、有効なURIを渡していますか?フレンドリーな名前の場合は、Visual Studioまたはregeditなどを使用してURIマッピングを初期化していますか? (HKLM \ Software \ Microsoft \ VisualStudio \ xxx \ TeamFoundation \ Servers)
  • ASPが、TFSに達するために別のURIを必要とするネットワークコンテキストで実行されているかどうかを確認します(例:netbios名と完全修飾ドメイン名、別のポート...)
  • 2台のマシンでプロキシ設定が同じですか?ファイアウォール?
  • TeamFoundationServerコンストラクタにどのような資格情報を渡していますか?
    • (サンプルコードで示されている)どれもない場合、あなたのアプリケーションプールはどのドメインアカウントで実行されていますか?
    • TeamFoundationServerを構成するスレッドは、偽装されたコンテキストで実行されていますか?偽装が期待どおりに動作していることを確認しましたか?私はなっていたエラー
+0

- HKLM \ Software \ Microsoft \ VisualStudio \ xxx \ TeamFoundation \ Serversにサーバーを追加しました。 - ASPがASPNETプロセスで実行されています。 - TFSサーバーマシンのプロキシ設定についてはわかりません - ところで:クレデンシャルを作成する方法はありますか?私が見ていた方法はすべてICredentialsをパラメータとして欲しがっているようですが、そのインターフェイスを実装するオブジェクトをインスタンス化する方法を見つけることができません... – dabuild

+0

レジストリを変更する必要はありませんあなたがVSの中からやっていない限り - エラーの余地が大きすぎます)。本当の、正直なところから神様のURIを与えてください。私。 "myserver"の代わりに "http:// myserver:8080"または "https://server.domain.company.com:443"などを指定します。 ///// "ASP.Netプロセス"とは何も意味しません - アプリケーションプールは特定のWindowsユーザーアカウント(またはLocalSystemまたはNetworkService)で実行されます。 /////資格情報を作成する最も簡単な方法は、これらのクラスの1つを作成することです。http://msdn.microsoft.com/en-us/library/system.net.networkcredential.aspx –

+0

TFSプロセスをそのユーザコンテキストで実行できるようにする特定のユーザアカウントで実行するアプリケーションプール。これは、APIを介してTFSサーバーオブジェクトに接続できないという問題を解決しました。 この質問の両方のスレッドが特定の問題に対処しましたが、この回答は私に最高の解決策を指摘しました。 ありがとうございます。 – dabuild

-1

提供されているサーバー名{TfsServerName}は、見つかったサーバーURIに対応していない可能性があります。サーバー名が正しいことを確認する必要があります。

あなたはそれがあなたに嘘をついていると思いますか?それはサーバーを見つけましたが、あなたはそれを使うべきではないと決めましたか?おそらく、あなたはあなたが思っているサーバー名を渡していないでしょう。デバッガで停止し、開発サーバーでテストするときに取得した文字列と同じ文字列であることを確認します。

また、エラーが発生しましたか、それとも例外ですか?それが例外だった場合は、例外をキャッチし、ex.ToString()の結果を投稿して例外全体を投稿してください。精神的なデバッグ時

+0

両方のシナリオでサーバー名が同じであることを確認しました。私の元の質問にも例外が追加されました。 – dabuild

+0

これはかなり簡単です。私は、Microsoft.TeamFoundation.Client.TeamFoundationServerは、WebサービスのASMXプロキシクラスであり、その場合、get_UriがUriプロパティをフェッチしており、それが有効ではないことがわかります。 –

+0

ありがとうございます。私はTFSを含むいくつかの分野では新人です。あなたは、この問題の原因と解決に関するあなたの考えをより具体的にすることができますか? – dabuild

0

は、「レジストリキーへのアクセスは 'ます。HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudioを\ 8.0 \ TeamFoundationの\ Serverは、' 拒否され System.UnauthorizedAccessException:レジストリキーへのアクセスを"

Visual StudioでTFSサーバーを追加した後はうまくいきました。理由は分かりませんが、後で誰かを助けることができるように、私の答えをここに追加するだけです。

関連する問題