【发布时间】:2023-03-25 23:07:01
【问题描述】:
我在解决 WCF 服务的问题时遇到了麻烦,该服务是在我对其实施“v2”合同以扩展功能后出现的。一切都很好,但是当我尝试在浏览器中访问该服务时,我只是被告知它无法连接。当我尝试将其添加为服务参考时,我收到有关连接问题的类似消息。但是,当我从配置文件中删除扩展合同的端点并保持之前的“v1”版本不变时,它可以正常工作。
这是“v1”合约:
namespace Company.Services.Ticketing.Retail.Contracts
{
[ServiceContract(Name = "OutletReportingContract_v1", Namespace = "https://enterprise.company.ie/Services/Retail")]
public interface IOutletReportingContract_v1
{
/* methods */
}
}
这里是“v2”合约:
namespace Company.Services.Ticketing.Retail.Contracts
{
[ServiceContract(Name = "OutletReportingContract_v2", Namespace = "https://enterprise.company.ie/Services/Retail")]
public interface IOutletReportingContract_v2 : IOutletReportingContract_v1
{
/* methods */
}
}
这里是 Web.config 中的端点:
<service name="Company.Services.Ticketing.Retail.OutletService" behaviorConfiguration="Public">
<endpoint address="1" binding="wsHttpBinding" bindingConfiguration="Standard" name="OutletReportingContract_v1"
contract="Company.Services.Ticketing.Retail.Contracts.IOutletReportingContract_v1" />
<endpoint address="2" binding="wsHttpBinding" bindingConfiguration="Standard" name="OutletReportingContract_v2"
contract="Company.Services.Ticketing.Retail.Contracts.IOutletReportingContract_v2" />
<endpoint address="mex" binding="mexHttpsBinding" name="IMetadataExchange" contract="IMetadataExchange" />
</service>
以下是事件查看器中显示的错误消息:
WebHost 未能处理请求。 发件人信息:System.ServiceModel.Activation.HostedHttpRequestAsyncResult/28075619 异常:System.Web.HttpException (0x80004005):在“https://phil-pc.company.local/Services/Retail/OutletService.svc/_vti_bin/ListData.svc/$metadata”处没有主动监听的通道。这通常是由不正确的地址 URI 引起的。确保将消息发送到的地址与服务正在侦听的地址相匹配。 ---> System.ServiceModel.EndpointNotFoundException:没有通道在“https://phil-pc.company.local/Services/Retail/OutletService.svc/_vti_bin/ListData.svc/$metadata”处主动监听。这通常是由不正确的地址 URI 引起的。确保将消息发送到的地址与服务正在侦听的地址相匹配。 在 System.ServiceModel.Activation.HostedHttpTransportManager.HttpContextReceived(HostedHttpRequestAsyncResult 结果) 在 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest() 在 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest() 在 System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult 结果) 在 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult 结果) 进程名称:w3wp 进程 ID:8148
现在有点难过,希望有任何帮助:)
【问题讨论】: