WCF使用反向代理

问题描述 投票:3回答:1

我为长篇帖子道歉...我们在组织内部使用.Net 4.0编写的WCF服务。最近需要在组织网络之外提供此服务。因此,网络人员使用反向代理在组织外部提供此服务。这是如何设置的图片。

正如您在图片中看到的那样......服务http://mywebservice.com/readd.svc托管在WIndows 2008 R2上,其内部IP地址为XXX.YYY.ZZZ.RRR。该服务托管在端口80上。

问题是什么 ?。

在内部,我可以使用WCFTestClient和浏览器以http://mywebservice.com/readd.svc的形式访问服务。但是在组织之外如果我输入http://mywebservice.com/readd.svc我得到“404文件找不到错误”并且在WCFTestCleint中我得到错误“错误:无法从http://mywebservice.com/readd.svc获得元数据.........”。

但是,如果我在浏览器中键入服务,我会看到显示soap链接的屏幕,如下所示。请忽略LookUpService.svc名称不匹配。

如上图所示......地址栏是https,但soap链接是http。如果我点击http链接http:// ....?wsdl,我找不到错误。这是因为反向代理仅允许连接为https。

如果我使用WCF测试客户端并将服务添加为qazxsw poi,我会收到如下错误。

“错误:无法从https://mywebsite.com/readd.svc获取元数据如果这是您有权访问的Windows(R)Communication Foundation服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅MSDN文档在https://mywebsite.com/readd.svc Exchange错误URI:http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata元数据包含一个无法解析的引用:'http://mywebsite.com/readd.svc'。服务https://mywebsite.com/readd.svc不支持内容类型application / soap + xml; charset = utf-8。 客户端和服务绑定可能不匹配。 远程服务器返回错误:(415)OK.HTTP GET错误 URI:https://mywebsite.com/readd.svc url https://mywebsite.com/readd.svc上的文档未被识别为已知文档类型。来自每种已知类型的错误消息可帮助您解决问题: - 来自“XML架构”的报告是“文档格式无法识别(内容类型为' text / html; charset = UTF-8')。'。来自'http://mywebsite.com/readd.svc'的报告是'文件格式无法识别(内容类型为'text / html; charset = UTF-8')。'.-报告来自'DISCO Document'是'下载'http://mywebsite.com/readd.svc'时出错。'。 - 请求失败,HTTP状态404:Not Found.-来自'WSDL Document'的报告是'文档格式无法识别(内容类型为'text / html; charset = UTF-8')。'。 “

网络人员通知我,以https的形式提供服务。这是我的web.config文件

http://mywebsite.com/readd.svc?disco

您能否建议我如何解决此问题..因此组织外部的用户可以使用WCF测试客户端以http / https的形式访问api。

更新了web.config文件

<behaviors>

  <serviceBehaviors>

    <behavior name="ServiceLookup.LookupServiceBehavior">
          <serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
          <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
    </behavior>

  </serviceBehaviors>

</behaviors>

 <services>
    <service behaviorConfiguration="ServiceLookup.LookupServiceBehavior" name="SmallApp.ServiceLookUp.LookUpService">

       <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BSBindingConfig" name="SmallApplianceBSEndPoint"
          contract="SmallApp.ServiceLookUp.ILookupService" />


       <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    </service>
 </services>
<!-- Remove this during deployment-->
<!--<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>-->

我仍然在组织网络外以http或https的身份访问错误

c# wcf iis-7.5 firewall reverse-proxy
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.