我希望你能再次提出一个我无法解决的问题。
我有一个Silverlight Web应用程序曾经工作,在更改代码,添加一些WCF方法和更新MS-SQL数据库上的表后,它已经停止工作,我无法弄清楚原因。
Web应用程序在默认IIS中托管的Windows 7上运行。
在Visual Studio中运行时,它可以正常工作,但在从网页运行时则不行。
我知道它与Enpdoint有关,但奇怪的是我没有改变任何东西。它从IIS上的同一站点运行。
WCF追踪:
Exception.ServiceModel.EndpointNotFoundException, System.ServiceModel, Version=4.0.0, Culture=neutral, PublicToken=b77a5c561934e089
我不是那么熟悉Silverlight,所以无法弄清楚发生了什么变化或者我发生了什么。
Web.config的一部分:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name="HSCGym.Web.GymRebateService.customBinding0" receiveTimeout="00:10:00" sendTimeout="00:10:00" openTimeout="00:10:00" closeTimeout="00:10:00">
<binaryMessageEncoding/>
<httpTransport/>
</binding>
</customBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
<services>
<service name="HSCGym.Web.GymRebateService">
<endpoint address="" binding="customBinding" bindingConfiguration="HSCGym.Web.GymRebateService.customBinding0" contract="HSCGym.Web.GymRebateService"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
</system.serviceModel>
如果我中断并检查EndPoint Uri地址,则显示错误:
http://localhost:8080/rebate/ebate/GymRebateService.svc
关于我做错了什么的想法?
尼尔
答案 0 :(得分:1)
问题是你没有告诉你的web服务它的终点在哪里,所以它将使用你创建它的那个很可能是localhost。
以下是我用来自动在localhost和服务器之间切换的一些代码,因此在部署时我不必记得这样做
string ServerPath = App.Current.Host.Source.AbsoluteUri.Replace(App.Current.Host.Source.AbsolutePath, "");
string ServicePath = ServerPath + "/Services/YOURSERVICENAME.svc";
var myBindings = new BasicHttpBinding();
myBindings.Security.Mode = BasicHttpSecurityMode.None;
myBindings.MaxReceivedMessageSize = int.MaxValue;
var address = new EndpointAddress(ServicePath);
App.GlobalVars.service = new RIFTRunComparerServiceClient(myBindings,address);