0

ASP.NET MVC 4 Web アプリケーションに基づいてサイトを作成しました。AuthConfig.cs の指示に従って、Twitter、Facebook、および Google の OpenAuth ログイン プロバイダーを有効にしました。

これは、サイトが IIS Express の Visual Studio からローカル マシンでデバッグされている場合に正常に機能します。ただし、サイトを別のマシンにコピーすると、オープン認証を使用するものを除いて、サイト全体が正常に機能します。

このマシンでは、ブラウザを使用して twitter、facebook、google にアクセスできます。

自分のサイトを使用してログオンしようとすると、Google の場合: "シーケンスには要素が含まれていません" とスタックトレースが

[InvalidOperationException: Sequence contains no elements] System.Linq.Enumerable.First(IEnumerable`1 source) +514 DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.CreateRequest(Identifier userSuppliedIdentifier, Realm realm, Uri returnToUrl) +106

[プロトコル例外: OpenID エンドポイントが見つかりません。 AspNet.OpenAuthSecurityManager.RequestAuthentication(String returnUrl) +666 NotesBoard.Controllers.ExternalLoginResult.ExecuteResult(ControllerContext context) in d:\dtaylor\Documents\Visual Studio 2012\Projects\NotesBoard\NotesBoard\Controllers\AccountController.cs:369 System.Web .Mvc.<>c_ DisplayClass1a.b _17 () +33 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter フィルター、ResultExecutingContext preContext、Func1 continuation) +613 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func1 継続) +613 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 フィルター, ActionResult actionResult) +263 System.Web.Mvc.Async.<>c_ DisplayClass25.b _22(IAsyncResult asyncResult) +240 System .Web.Mvc.<>c_ DisplayClass1d.b _18(IAsyncResult asyncResult) +28 System.Web.Mvc.Async.<>c_ DisplayClass4.b _3 (IAsyncResult ar) +15 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult) asyncResult) +53 System.Web.Mvc.Async.<>c_ DisplayClass4.b _3 (IAsyncResult ar) +15 System.Web.Mvc.<>c_ DisplayClass8.b _3(IAsyncResult asyncResult) +42 System.Web.Mvc. Async.<>c_ DisplayClass4.b_3(IAsyncResult ar) +15 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288

Twitter の場合: 「接続先が一定期間後に適切に応答しなかったため、接続の試行に失敗したか、接続されたホストが 199.16.156.72:443 に応答できなかったため、確立された接続が失敗しました」と、次のスタック トレースが表示されます。

[SocketException (0x274c): 接続先が一定時間後に適切に応答しなかったため、接続の試行に失敗したか、接続されたホストが 199.16.156.72:443 に応答しなかったために確立された接続に失敗しました] System.Net.Sockets.Socket.DoConnect (EndPoint endPointSnapshot, SocketAddress socketAddress) +273 System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception) +584

[WebException: リモート サーバーに接続できません] System.Net.HttpWebRequest.GetResponse() +8527180 DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse(HttpWebRequest リクエスト、DirectWebRequestOptions オプション) +261

[ProtocolException: ダイレクト メッセージの送信中または応答の取得中にエラーが発生しました。 .Request(IDirectedProtocolMessage requestMessage) +138 DotNetOpenAuth.Messaging.Channel.Request(IDirectedProtocolMessage requestMessage) +45 DotNetOpenAuth.OAuth.ConsumerBase.PrepareRequestUserAuthorization(Uri コールバック、IDictionary2 requestParameters, IDictionary2 redirectParameters, String& requestToken) +202 DotNetOpenAuth.AspNet.Clients.DotNetOpenAuthWebConsumer.RequestAuthentication(Uri コールバック) +88 DotNetOpenAuth.AspNet.OpenAuthSecurityManager.RequestAuthentication(文字列 returnUrl) +666 NotesBoard.Controllers.ExternalLoginResult.ExecuteResult(ControllerContext コンテキスト) in d: \dtaylor\Documents\Visual Studio 2012\Projects\NotesBoard\NotesBoard\Controllers\AccountController.cs:369 System.Web.Mvc.<>c_ DisplayClass1a.b _17() +33 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilterフィルター、ResultExecutingContext preContext、Func1 continuation) +613 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func1 継続) +613 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 フィルター, ActionResult actionResult) +263 System.Web.Mvc.Async.<>c_ DisplayClass25.b _22(IAsyncResult asyncResult) +240 System .Web.Mvc.<>c_ DisplayClass1d.b _18(IAsyncResult asyncResult) +28 System.Web.Mvc.Async.<>c_ DisplayClass4.b _3 (IAsyncResult ar) +15 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult) asyncResult) +53 System.Web.Mvc.Async.<>c_ DisplayClass4.b _3 (IAsyncResult ar) +15 System.Web.Mvc.<>c_ DisplayClass8.b _3(IAsyncResult asyncResult) +42 System.Web.Mvc. Async.<>c_ DisplayClass4.b_3(IAsyncResult ar) +15 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288

一方、Facebookは実際にはユーザー名とパスワードの入力を求めますが、「接続されたパーティーが一定期間後に適切に応答しなかったため、接続の試行に失敗したか、接続されたホストが応答に失敗したため、確立された接続に失敗しました173.252」が返されます.100.27:443 "および次のスタック トレース:

[SocketException (0x274c): 接続先が一定時間後に適切に応答しなかったため、接続の試行に失敗したか、接続されたホストが応答しなかったために確立された接続が失敗しました 173.252.100.27:443] System.Net.Sockets.Socket.DoConnect (EndPoint endPointSnapshot, SocketAddress socketAddress) +273 System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception) +584

[WebException: リモート サーバーに接続できません] System.Net.WebClient.DownloadDataInternal(Uri アドレス、WebRequest& リクエスト) +3624556 System.Net.WebClient.DownloadString(Uri アドレス) +213 DotNetOpenAuth.AspNet.Clients.FacebookClient.QueryAccessToken( Uri returnUrl, String authorizationCode) +399 DotNetOpenAuth.AspNet.Clients.OAuth2Client.VerifyAuthentication(HttpContextBase context, Uri returnPageUrl) +186 DotNetOpenAuth.AspNet.OpenAuthSecurityManager.VerifyAuthentication(String returnUrl) +502 Microsoft.Web.WebPages.OAuth.OAuthWebSecurity.VerifyAuthenticationCore (HttpContextBase コンテキスト、文字列 returnUrl) +250 NotesBoard.Controllers.AccountController.ExternalLoginCallback(文字列 returnUrl) in d:\dtaylor\Documents\Visual Studio 2012\Projects\NotesBoard\NotesBoard\Controllers\AccountController.cs:225 lambda_method(Closure , ControllerBase , Object[] ) +127 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary2 parameters) +274 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary2 つのパラメーター) +39 System.Web.Mvc.Async.<>c_ DisplayClass39.b _33() +120 System.Web.Mvc.Async.<>c_ DisplayClass4f.b _49() +452 System.Web.Mvc.Async .<>c_ DisplayClass4f.b _49() +452 System.Web.Mvc.Async.<>c_ DisplayClass37.b _36(IAsyncResult asyncResult) +15 System.Web.Mvc.Async.<>c_ DisplayClass2a.b _20() +33 System.Web.Mvc.Async.<>c_ DisplayClass25.b _22(IAsyncResult asyncResult) +240 System.Web.Mvc.<>c_ DisplayClass1d.b _18(IAsyncResult asyncResult) +28 System.Web.Mvc.Async. <>c_ DisplayClass4.b_3(IAsyncResult ar) +15 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +53 System.Web.Mvc.Async.<>c_ DisplayClass4.b _3 (IAsyncResult ar) +15 System.Web.Mvc.< >c_ DisplayClass8.b _3(IAsyncResult asyncResult) +42 System.Web.Mvc.Async.<>c_ DisplayClass4.b _3(IAsyncResult ar) +15 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606 System.Web.HttpApplication.ExecuteStep(IExecutionStep ステップ、ブール値& completedSynchronously) +288

PS。IE のサーバーに設定されたプロキシ経由でインターネットにアクセスすることは言及する価値があります。提供されたテンプレートに、プロキシ サーバーなどを指定できるコードが見つかりませんでした。

助けてください。

4

1 に答える 1

2

この問題を解決できたと思います。プロキシ サーバーに問題があったようです。NetworkServices をアプリケーション プール ID として使用するように構成された IIS でこのサイトを実行していたアプリケーション プールを用意しました。問題が解決されたかどうかを確認するために、ID を自分自身として実行するように変更しました。サイトをユーザー アカウントとして実行することは明らかにお勧めできません。そのため、IT チームに、このサイト用のドメイン アカウントを作成するよう依頼します。このアカウントは、プロキシ サーバー経由でもアクセスできます。

同じ問題を抱えている他の誰かに役立つことを願っています。

于 2013-04-29T11:47:35.520 に答える