无法在IIS上访问Web服务,代理后面

时间:2015-07-29 13:56:04

标签: c# asp.net web-services iis windows-services

花了两天时间查看了很多问题,但没有发现任何问题,或者可能是我做错了什么。基本上,我从类库中访问AXIS Web服务,Web应用程序和Windows服务使用库。服务引用被添加到类库中,Web应用程序和Windows服务都可以访问该服务,并且在Visual Studio内部运行时没有任何问题。但是,当我发布应用程序并安装Windows服务时,应用程序会抛出错误。

错误
" https://bulkmsg.xx.wxyz.com/services/MessagingServices_1没有可以接受该消息的端点监听。这通常是由错误的地址或SOAP操作引起的。有关详细信息,请参阅InnerException(如果存在)。"

WEB.CONFIG(代理设置)

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

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

WEB.CONFIG(服务设置)

  <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服务都安装在Win 2008服务器上,该服务器从代理服务器后面连接到Internet。

因为,应用程序能够访问Visual Studio中的Web服务,但不能访问IIS,它看起来像IIS的权限或某些设置问题,我可能是错的,但这就是我想到的。 我不确定究竟应该改变什么以及在哪里。

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

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

2 个答案:

答案 0 :(得分:0)

由于NullReferenceException(根据提供的事件日志),您的Web服务似乎在启动时崩溃。 因此无法访问Web服务,因此您可以得到这个[...]没有端点监听[...]&#34;错误信息。

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

此外 - 如果可以的话 - 您可以尝试直接在网络服务器上访问网络服务,只需将链接输入到网络浏览器即可。如果直接在服务器上试用,可以获得更多信息。

答案 1 :(得分:0)

周围工作

我找到了一个解决方法,从服务引用切换到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加上面的代码,就像一个魅力。