web服务无法在IIS上访问,在代理之后

本文关键字:访问 代理 之后 IIS 服务 web | 更新日期: 2023-09-27 18:05:17

花了两天时间看了很多问题,但什么也没发现,或者可能是我做错了什么。基本上,我是从类库内部访问AXIS web服务,而类库由web应用程序和windows服务使用。服务引用被添加到类库中,web应用程序和windows服务都可以访问该服务,并在visual studio中轻松运行。然而,当我发布应用程序,并安装windows服务,应用程序抛出以下错误。

误差


"在https://bulkmsg.xx.wxyz.com/services/MessagingServices_1上没有侦听端点可以接受此消息。这通常是由不正确的地址或SOAP操作引起的。"

>

网络。配置(代理设置)

<defaultProxy useDefaultCredentials="true">
  <proxy usesystemdefault="False" proxyaddress="http://10.51.10.51:8080" bypassonlocal="True" />
</defaultProxy>

我将设置从false切换到true,但我仍然得到相同的错误。参见下面web.config的servicmodel部分。

网络。配置(服务设置)

  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="MessagingServices_1SoapBinding" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
            allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
            maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
            messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
            useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="Transport">
            <transport clientCredentialType="None" proxyCredentialType="None"
                realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
        <binding name="MessagingServices_1SoapBinding1" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
            allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
            maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
            messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
            useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
                realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="https://bulkmsg.xx.wxyz.com/services/MessagingServices_1"
          binding="basicHttpBinding" bindingConfiguration="MessagingServices_1SoapBinding"
          contract="ZainSmsService.MessagingServices_1" name="MessagingServices_1" />
    </client>
  </system.serviceModel>

web应用程序和windows服务都安装在win2008服务器上,该服务器从代理后面连接到internet。

既然,应用程序能够在visual studio内访问web服务,但不能在IIS中访问,它看起来像是IIS的权限或一些设置问题,我可能错了,但这就是我发现的。我不确定我应该改变什么,在哪里。

UPDATE: 更多信息
我做了一些挖掘,并设法找到了这个

技术信息(供技术支持人员使用)
错误码:502代理错误。Forefront TMG拒绝指定的统一资源定位符(URL)。(12202)IP地址:10.51.10.51
日期:7/30/2015 6:54:58 AM [GMT]
服务器:MUPROXY.MOXXX.GOV.XXX
来源:代理

web服务无法在IIS上访问,在代理之后

变通

我找到了一个解决方案,从服务引用切换到web引用,并使用下面的代码来传递代理详细信息。

WebProxy _proxy = new WebProxy(_config.GetAppKey("PROXY"), Boolean.Parse(_config.GetAppKey("BYPASSONLOCAL")));
                _proxy.Credentials = new NetworkCredential
                {
                    UserName = _config.GetAppKey("PROXYUSER"),
                    Password = _config.GetAppKey("PROXYPWD")
                };
XXXXSmsService.MessagingServices_1Service _xxxxProxy = new XXXXSmsService.MessagingServices_1Service();
_xxxProxy = _proxy;

Web Referecen加上上面的代码,工作起来像一个魅力。

似乎你的web服务在启动时崩溃,因为一个NullReferenceException(根据提供的事件日志)。因此,无法访问web服务,因此您会得到此"[…]无止境地倾听……错误信息。

你能试着找出,究竟在哪里这个NullReferenceException发生?

同样,如果可能的话,你可以尝试直接在web服务器上访问web服务,只需在web浏览器中输入链接。如果您直接在服务器上尝试,可以获得更多信息。