C# Web服务(Discovery.svc?wsdl)和Forefront TMG身份验证
我有一个类似的WCF服务URL。但如果我在浏览器窗口中打开此URL,我将获得授权屏幕: 如果我尝试在我的C代码中添加此URL,则会出现异常:C# Web服务(Discovery.svc?wsdl)和Forefront TMG身份验证,c#,wcf,web-services,authentication,C#,Wcf,Web Services,Authentication,我有一个类似的WCF服务URL。但如果我在浏览器窗口中打开此URL,我将获得授权屏幕: 如果我尝试在我的C代码中添加此URL,则会出现异常: ServiceConfigurationFactory.CreateManagement(新Uri(url)); 异常:元数据包含无法解析的引用:“” 或 异常:元数据包含无法解析的引用:“” 如果我有用户登录名和密码,如何从我的客户端应用程序访问web服务?TMG基本上是一个公司防火墙,阻止您的传入请求,因此您首先必须与TMG协商,然后将请求发送到您
ServiceConfigurationFactory.CreateManagement(新Uri(url));
异常:元数据包含无法解析的引用:“”
或
异常:元数据包含无法解析的引用:“”
如果我有用户登录名和密码,如何从我的客户端应用程序访问web服务?TMG基本上是一个公司防火墙,阻止您的传入请求,因此您首先必须与TMG协商,然后将请求发送到您的WCF服务 下面是我从处理类似问题中获得的一个绑定示例:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IService1">
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://www.myservice.com/Service1.svc"
behaviorConfiguration="myEndpointBehaviour"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IService1"
contract="Client.IService1"
name="BasicHttpBinding_IService1" />
</client>
<behaviors>
<endpointBehaviors>
<behavior name="myEndpointBehaviour">
<clientCredentials>
<clientCertificate
storeName="My"
storeLocation="CurrentUser"
findValue="CN=WCF client cert 2" />
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
如果您的服务没有启用任何消息级安全性,则此绑定已经可以
顺便说一句,确保您拥有访问服务的正确证书,登录名和密码可能意味着消息级别的安全性。TMG基本上是一个公司防火墙,阻止您的传入请求,因此您首先必须与TMG协商,然后将您的请求发送到WCF服务 下面是我从处理类似问题中获得的一个绑定示例:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IService1">
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://www.myservice.com/Service1.svc"
behaviorConfiguration="myEndpointBehaviour"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IService1"
contract="Client.IService1"
name="BasicHttpBinding_IService1" />
</client>
<behaviors>
<endpointBehaviors>
<behavior name="myEndpointBehaviour">
<clientCredentials>
<clientCertificate
storeName="My"
storeLocation="CurrentUser"
findValue="CN=WCF client cert 2" />
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
如果您的服务没有启用任何消息级安全性,则此绑定已经可以
顺便说一句,确保您拥有访问服务的正确证书,登录名和密码可能意味着消息级别的安全性