花了两天时间查看了很多问题,但没有发现任何问题,或者可能是我做错了什么。基本上,我从类库中访问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
来源:代理
答案 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加上面的代码,就像一个魅力。