部署到DMZ时Web服务出错

时间:2014-02-19 10:03:24

标签: c# web-services wcf

我有一个可以在我的计算机上运行的web服务,但是当部署到网络服务器(在DMZ中)时,它不起作用。

在Web服务器上运行服务时,它会显示看似正确的WSDL和singleWSDL。使用SoapUI中的singleWSDL来测试服务会返回以下错误消息

  

无法处理邮件。这很可能是因为   操作'http://tempuri.org/IService1/TestStringContract'不正确   或者因为邮件包含无效或过期的安全上下文   令牌或因为绑定之间存在不匹配。安全   如果服务中止通道到期,则上下文令牌将无效   不活动。防止服务中止空闲会话   过早增加服务端点上的接收超时   结合。

从我收集到的,最可能的原因,是App.Config文件中的一个问题,我在此详述

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
    <compilation debug="true" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="MyService.Service1" behaviorConfiguration="MyService.Service1Behavior">
        <host>
          <baseAddresses>
            <add baseAddress = "http://localhost:{port}/MyService.Service1.svc" />
          </baseAddresses>
        </host>
        <endpoint address="http://{external_ip}:{port}/MyService.Service1.svc" binding="wsHttpBinding" contract="MyService.IService1">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="EquitaWcfCbl.Service1Behavior">
          <serviceThrottling maxConcurrentCalls="10"/>
          <serviceMetadata httpGetEnabled="True" httpGetUrl="http://{external_ip}:{port}/EquitaWcfCblMyService.Service1.svc/mex"/>
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

[update @ 2014-02-19 1400hrs]

随着进一步研究不断指出App.Config的设置;我决定拔出当前的App.Config文件并从头开始,使用WCF服务配置编辑器再次启动它,该编辑器内置于Visual Studio(工具菜单)中,一次添加一个信息并测试进度,使用以下App.Config

生成了一项工作服务
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior1">
          <serviceDebug includeExceptionDetailInFaults="true"/>
          <serviceMetadata 
            httpGetEnabled="true" 
            httpGetUrl=" http://{externalip}:{port}/MyService.Service1.svc/mex"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding>
          <security mode="None"></security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service 
        behaviorConfiguration="ServiceBehavior1" 
        name="EquitaWcfCbl.TabletService">
        <endpoint 
          address="http://{externalip}:{port}/MyService.Service1.svc/mex" 
          binding="basicHttpBinding"
          bindingConfiguration="" 
          name="ServiceEndpoint1" 
          contract=" MyService.Service1" />
      </service>
    </services>
  </system.serviceModel>
</configuration>

我(还)完全不相信这正是我们所需要的,但是通过一项有效的服务...我至少可以取得进步。

0 个答案:

没有答案