我为长篇帖子道歉...我们在组织内部使用.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的身份访问错误