【发布时间】:2010-05-19 18:55:54
【问题描述】:
问题: (最后解决) 我在 Web 项目中有一个 Silverlight 应用程序
网络
银光
网络包含一项服务:
[WebService(Namespace = "svChat")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
//[System.Web.Script.Services.ScriptService]
public class GetIPService : System.Web.Services.WebService
{
public GetIPService ()
{
//Uncomment the following line if using designed components
//InitializeComponent();
}
[WebMethod]
public string GetIp()
{
return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
}
我在 Silverlight 应用程序中使用该服务获得了一门课程:
public class Client
{
private string ip;
private string created;
#region Properties
public string Ip
{
get { return ip; }
set { ip = value; }
}
public string Created
{
get { return created; }
set { created = value; }
}
#endregion
public Client()
{
}
public void SetIp()
{
ServiceReference1.GetIPServiceSoapClient scIpClient = new svChat.ServiceReference1.GetIPServiceSoapClient();
scIpClient.GetIpCompleted += new EventHandler<svChat.ServiceReference1.GetIpCompletedEventArgs>(IpService_Completed);
scIpClient.GetIpAsync();
}
private void IpService_Completed(object sender, ServiceReference1.GetIpCompletedEventArgs e)
{
this.ip = e.Result;
}
}
创建Client后,调用SetIp(),并将Client.Ip添加到文本框中。 没发生什么事。 ip = null。
服务本身有效,经过测试。 通过上面的代码获取IP是可行的。
通过 Silverlight 应用程序通过服务获取 IP 不起作用。
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="GetIPServiceSoap" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:2090/svChat.Web/GetIPService.asmx"
binding="basicHttpBinding" bindingConfiguration="GetIPServiceSoap"
contract="ServiceReference1.GetIPServiceSoap" name="GetIPServiceSoap" />
</client>
</system.serviceModel>
</configuration>
有什么想法吗?
问候,
解决方案: 在 VS 2010 (Ultimate) 中创建 Silverlight 应用程序会导致 VS 为 silverlight 应用程序和网站使用相同的测试服务器。 在 VS 使用 Silverlight 配置设置测试服务器之前,这没有问题。 silverlight 客户端现在将无法正确访问 webservers web 服务。 确切的原因尚不清楚,但我认为这是由上述情况引起的。 所以开始调试,等到网站正在加载,弹出“异常”,然后“停止”调试,继续测试网站,不用担心异常。 缺点:无法调试。
【问题讨论】:
-
为什么不在客户端和服务器上都使用 WCF?
标签: c# .net silverlight web-services asmx