インターネットを検索しましたが、現在のようなシナリオは見つかりませんでした。シナリオは、ASP.NETMVC3レポートアプリケーションとスタンドアロンのWCFホストサービスがあることです。ASP.NET MVC 3のbinデプロイを実行しています。すべてが、ローカル環境と開発サーバーで正常に機能します。ASP.NET MVCプロジェクトのサービス参照を使用して、クライアント側のプロキシを呼び出しています。
ただし、負荷分散を行っているクライアントのテスト環境(ASP.NETとWCFレイヤーの両方が同じ負荷分散サーバー上に存在する)に展開すると、失敗します。ローカルビルドを実行し、エンドポイントをそのdev wcfサービスにポイントすると、正常に機能します。テストURL自体からアプリケーションを起動しようとした場合にのみ失敗します。次のエラーが発生します(エンドポイントとサービスコール情報を編集しました:
"System.ServiceModel.CommunicationException:http:[testserver]へのHTTP応答の受信中にエラーが発生しました。これは、HTTPプロトコルを使用していないサービスエンドポイントバインディングが原因である可能性があります。これは、HTTP要求コンテキストがによって中止されたことが原因である可能性もあります。サーバー(おそらくサービスのシャットダウンが原因です)。詳細については、サーバーログを参照してください。---> System.Net.WebException:基になる接続が閉じられました:受信時に予期しないエラーが発生しました。---> System.IO .IOException:トランスポート接続からデータを読み取れません:既存の接続がリモートホストによって強制的に閉じられました---> System.Net.Sockets.SocketException:既存の接続がSystem.Netのリモートホストによって強制的に閉じられました。 Sockets.NetworkStream.Read(Byte []バッファー、Int32オフセット、Int32サイズ)---内部例外スタックトレースの終了--- System.Net.Sockets.NetworkStream.Read(Byte []バッファー、Int32オフセット、Int32サイズ)at System.Net.PooledStream.Read(Byte[]バッファー、Int32オフセット、Int32サイズ)at System.Net.Connection.SyncRead(HttpWebRequest request、Boolean userRetrievedStream、Boolean probeRead)---内部例外スタックトレースの終了--- System.Net.HttpWebRequest.GetResponse()atSystem。 ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)---内部例外スタックトレースの終了---サーバースタックトレース:System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException、HttpWebRequest request、HttpAbortReason abortReason )System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannelで。System.ServiceModel.Channels.RequestChannel.Request(メッセージメッセージ、TimeSpanタイムアウト)でのHttpChannelRequest.WaitForReply(TimeSpanタイムアウト)System.ServiceModel.Channels.ServiceChannel.Call(String action、Boolean oneway、ProxyOperationRuntime operation、Object [] ins、Object [] outs、TimeSpan timeout)at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall、ProxyOperationRuntime operation)at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)例外が[0]で再スローされました:System.Runtimeで。 Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg、IMessage retMsg)at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData、Int32 type)at ReportingApp.UserClientProxy.IUser.GetUsersBetween(DateTime start、DateTime end)at ReportingApp.Controllers.HomeController.PopulateResultsTable(ReportingViewModel vm)at ReportingApp.Controllers.HomeController.Index()at lambda_method(Closure、ControllerBase、Object [])at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext、 IDictionary
2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2パラメーター)atSystem.Web.Mvc.ControllerActionInvoker。<>c_ DisplayClass15.b _12()at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter、ActionExecutingContext preContext、Func1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList
1フィルター、ActionDescriptor actionDescriptor、IDictionary`2パラメーター) System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext、String actionName)で
私のASP.NETwcf構成は次のとおりです。
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IUser" closeTimeout="00:10:00"
openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="5242880" maxBufferPoolSize="5242880" maxReceivedMessageSize="5242880"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="5242880" maxStringContentLength="5242880" maxArrayLength="5242880"
maxBytesPerRead="5242880" maxNameTableCharCount="5242880" />
<security mode="None" >
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="[testEndPoint]" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IUser" contract="UserClientProxy.IUser"
name="BasicHttpBinding_IUser" />
私のサービスWeb設定は次のようになります。
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
<!--Doubled from value again to resolve issues with the reporting process.-->
<dataContractSerializer maxItemsInObjectGraph="524288" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding maxBufferSize="5242880" maxBufferPoolSize="5242880" maxReceivedMessageSize="5242880">
<readerQuotas maxDepth="5242880" maxStringContentLength="5242880" maxArrayLength="5242880"
maxBytesPerRead="5242880" maxNameTableCharCount="5242880" />
</binding>
</basicHttpBinding>
</bindings>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
この問題の原因は何ですか?権限の問題または構成の問題でしょうか?クライアントのテスト環境エンドポイントを指すローカルビルドから機能するため、混乱しています。
前もって感謝します!