Nɪs*_*ʜ ॐ 4 asp.net iis wcf endpoint net.tcp
这个奇怪的错误是在发布这篇文章的前一天出现的。以前它工作正常,但现在不行了。
在重新启动系统的一个动作中,错误消失并能够访问应用程序。
再次重新启动系统后,错误开始出现而不知道根本原因。
启用的协议: net.tcp,http
我可以浏览以下链接
这是导致异常的以下代码段
objCheckUserLoginResponse = AuthenticationManagerClient.Check(objCheckUserLoginRequest, objCustomer);
Run Code Online (Sandbox Code Playgroud)
例外:
The message could not be dispatched because the service at the endpoint address 'net.tcp://localhost/TAServices/AuthenticationManager.svc' is unavailable for the protocol of the address.
System.ServiceModel.EndpointNotFoundException: The message could not be dispatched because the service at the endpoint address 'net.tcp://localhost/TAServices/AuthenticationManager.svc' is unavailable for the protocol of the address.
Server stack trace:
at System.ServiceModel.Channels.ConnectionUpgradeHelper.DecodeFramingFault(ClientFramingDecoder decoder, IConnection connection, Uri via, String contentType, TimeoutHelper& timeoutHelper)
at System.ServiceModel.Channels.StreamedFramingRequestChannel.SendPreamble(IConnection connection, TimeoutHelper& timeoutHelper, ClientFramingDecoder decoder, SecurityMessageProperty& remoteSecurity)
at System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper)
at System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
at System.ServiceModel.Channels.StreamedFramingRequestChannel.StreamedFramingRequest.SendRequest(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
at 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)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at TA.ServiceProxy.AuthenticationManager.IAuthenticationManager.Check(CheckUserLoginRequest1 request)
at TA.ServiceProxy.AuthenticationManager.AuthenticationManagerClient.TA.ServiceProxy.AuthenticationManager.IAuthenticationManager.Check(CheckUserLoginRequest1 request) in D:\2017_TFS\TestandAssessment\Dev\Manifest\TestPrepAdmin\ServiceProxy\Service References\AuthenticationManager\Reference.cs:line 3370
at TA.ServiceProxy.AuthenticationManager.AuthenticationManagerClient.Check(CheckUserLoginRequest Request, Customer Customer) in D:\2017_TFS\TestandAssessment\Dev\Manifest\TestPrepAdmin\ServiceProxy\Service References\AuthenticationManager\Reference.cs:line 3377
at TA.UIFrameWork.AuthenticationManagement.AuthenticateUser(CheckUserLoginRequest objCheckUserLoginRequest) in D:\2017_TFS\TestandAssessment\Dev\Manifest\TestPrepAdmin\UIFrameWork\Authentication\AuthenticationManagement.cs:line 19
T: 2020-05-09 12:19:52,242 |L: INFO |TH: 8 |L: Utilities.PageBase |MSG:
SessionID: Method: LoadLanguages
Info: Page: Login.aspx Method: LoadLanguages Enters
Run Code Online (Sandbox Code Playgroud)
认证管理.cs
using TA.ServiceProxy.AuthenticationManager;
using System;
namespace TA.UIFrameWork
{
public class AuthenticationManagement
{
public CheckUserLoginResponse AuthenticateUser(CheckUserLoginRequest objCheckUserLoginRequest)
{
Customer objCustomer;
CheckUserLoginResponse objCheckUserLoginResponse = null;
try
{
objCustomer = new Customer();
objCustomer.CustomerName = "ABC";
objCustomer.CultureInfo = "English";
AuthenticationManagerClient AuthenticationManagerClient = new AuthenticationManagerClient();
AuthenticationManagerClient.Open();
objCheckUserLoginResponse = AuthenticationManagerClient.Check(objCheckUserLoginRequest, objCustomer);
AuthenticationManagerClient.Close();
AuthenticationManagerClient = null;
objCustomer = null;
objCheckUserLoginRequest = null;
}
catch (Exception ex)
{
LoggingFramework.log.Error(ex.Message, ex);
}
return objCheckUserLoginResponse;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
网页配置
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
<section name="dns" type="System.Configuration.NameValueFileSectionHandler" />
</configSections>
<dataConfiguration defaultDatabase="LocalSqlServer" />
<dns file="dns.config" />
<system.web>
<!-- Web Part -->
<membership>
<providers>
<clear />
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" applicationName="/MVCFramework" />
</providers>
</membership>
<profile enabled="true" defaultProvider="TableProfileProvider">
<providers>
<clear />
<add name="TableProfileProvider" type="Microsoft.Samples.SqlTableProfileProvider" connectionStringName="LocalSqlServer" table="aspnet_Profile" applicationName="/MVCFramework" />
</providers>
</profile>
<!-- End Web Part -->
<pages validateRequest="false" enableEventValidation="false" enableViewStateMac="false" maintainScrollPositionOnPostBack="false" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
<controls>
<add namespace="AjaxControlToolkit" assembly="AjaxControlToolkit" tagPrefix="ajaxToolkit" />
</controls>
</pages>
<customErrors mode="Off">
<error statusCode="403" redirect="Status.aspx" />
<error statusCode="404" redirect="Status.aspx" />
</customErrors>
<httpCookies httpOnlyCookies="true">
</httpCookies>
<trace enabled="false" localOnly="true">
</trace>
<httpRuntime maxRequestLength="2097151" executionTimeout="220000" requestValidationMode="2.0" />
<!--
Set compilation debug="false" to insert debugging
symbols into the compiled page. Because this
affects performance, set this value to true only
during development.
-->
<compilation debug="true" defaultLanguage="c#" targetFramework="4.0">
<assemblies>
</assemblies>
<buildProviders>
<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</buildProviders>
</compilation>
<sessionState mode="InProc" timeout="6000" cookieless="UseCookies">
</sessionState>
<authorization>
<allow users="?" />
</authorization>
<httpHandlers>
<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false" />
<add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
</httpHandlers>
</system.web>
<system.net>
<settings>
<servicePointManager expect100Continue="false" />
</settings>
</system.net>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1024000000"></requestLimits>
</requestFiltering>
</security>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ChartImageHandler" />
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</handlers>
<modules>
<add name="QueryStringValidation" type="Presentation.Utilities.QueryStringValidation" />
</modules>
</system.webServer>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.3.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_Framework" closeTimeout="00:50:00" openTimeout="00:50:00" receiveTimeout="00:50:00" sendTimeout="00:50:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="999999999" maxBufferPoolSize="524288" maxReceivedMessageSize="999999999" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="999999999" maxArrayLength="999999999" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None"/>
</binding>
</basicHttpBinding>
<netTcpBinding>
<binding name="NetTcpBinding_Framework" closeTimeout="00:50:00" openTimeout="00:50:00" receiveTimeout="00:50:00" sendTimeout="00:51:00" transactionFlow="false" transferMode="Streamed" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="999999999" maxBufferSize="999999999" maxConnections="10" maxReceivedMessageSize="999999999">
<readerQuotas maxDepth="32" maxStringContentLength="999999999" maxArrayLength="999999999" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:50:00" enabled="false" />
<security mode="None">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
<message clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://localhost/TAServices/AccountManager.svc" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_Framework" contract="AccountManager.IAccountManager" name="NetTcpBinding_Framework" />
</client>
<behaviors>
<endpointBehaviors>
<behavior name="ClientBehavior">
<dataContractSerializer maxItemsInObjectGraph="10000000" />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
<location path="Common">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="5000000" />
</webServices>
</scripting>
</system.web.extensions>
</configuration>
Run Code Online (Sandbox Code Playgroud)
在不知道原因的情况下,我什么也做不了。请建议解决EndpointNotFoundException
问题写入代码或从 Windows 10 (1903)
我通过在启动英特尔® 显卡驱动程序更新后释放OneApp.IGCC.WinService.exe
占用端口来解决此问题808
。但这听起来很奇怪,因此请检查是否SMSvcHost.exe
已列出808
端口。
C:\Windows\system32>netstat -ano | find "808"
TCP 0.0.0.0:808 0.0.0.0:0 LISTENING 4356
TCP [::]:808 [::]:0 LISTENING 4356
C:\Windows\system32>tasklist | find "5156"
SMSvcHost.exe 5156 Services 0 5,604 K
Run Code Online (Sandbox Code Playgroud)
如果您发现该进程名称未SMSvcHost.exe
列出,例如OneApp.IGCC.WinService.ex
或具有其他名称,则继续执行这些步骤,否则停止此处。
因此,在我的情况下,按名称的进程OneApp.IGCC.WinService.ex
已占用808
具有唯一进程 ID 的端口作为从提升的提示符5068
执行命令TASKKILL /F /PID <ProcessId>
。
C:\Windows\system32>netstat -ano | find "808"
TCP 0.0.0.0:808 0.0.0.0:0 LISTENING 5068
TCP [::]:808 [::]:0 LISTENING 5068
C:\Windows\system32>tasklist | find "5068"
OneApp.IGCC.WinService.ex 5068 Services 0 36,632 K
C:\Windows\system32>taskkill /F /PID 5068
SUCCESS: The process with PID 5068 has been terminated.
C:\Windows\system32>netstat -ano | find "808"
C:\Windows\system32>
Run Code Online (Sandbox Code Playgroud)
然后重新启动Net.Tcp Port Sharing Service
从services.msc
即使在重新启动后,系统OneApp.IGCC.WinService.exe
也会SMSvcHost.exe
通过监听808
端口来覆盖。所以禁用运行Intel(R) Graphics Command Center Service (C:\Windows\System32\DriverStore\FileRepository\igcc_dch.inf_amd64_26b207b939eae50e)
fromservices.msc
看来您在 IIS 中托管 WCF 服务项目并尝试使其正常HTTP
工作Nettcp
。为了使其通过 NetTcp 协议工作,我们应该在 IIS 站点绑定模块中启用某些 Window 功能和 NetTcp 绑定。另外,我们应该使用 Nettcpbinding 配置服务端点,但您的Webconfig
文件中没有设置该端点。System.servicemodel
请考虑用以下配置替换该部分。
<system.serviceModel>
<services>
<service name="WcfService1.Service1">
<endpoint address="service1" binding="basicHttpBinding" contract="WcfService1.IService1" ></endpoint>
<endpoint address="service2" binding="netTcpBinding" contract="WcfService1.IService1"></endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"></endpoint>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding>
<security mode="Transport">
<transport clientCredentialType="None"></transport>
</security>
</binding>
</basicHttpBinding>
<netTcpBinding>
<binding>
<security mode="None"></security>
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
为了在 IIS 中支持 Net.tcp 协议,请启用以下 Windows 功能。
随后,在网站上添加Net.tcp支持。
最后,添加与 net.tcp 协议的站点绑定。注意,808是net.tcp协议的默认端口。请勿使用其他网站已使用的端口号。
请参考以下链接。
找不到与绑定 NetTcpBinding 的端点的方案 net.tcp 相匹配的基地址。基地址方案是 [http]
如果问题仍然存在,请随时告诉我。
归档时间: |
|
查看次数: |
2178 次 |
最近记录: |