我创建了一个在 192.168.0.199:87 上运行的 WCF 服务。该服务可以正常工作。但是,当我在 VS 中创建一个 Silverlight 应用程序以在我的开发电脑上使用此服务时,我遇到了跨域问题。我将如何解决这个问题?该服务不是 IIS WCF 服务。我也不能在同一个端口上托管 WCF 服务和 Silverlight 应用程序。Silverlight 正在 192.178.0.199:87 上查找 clientaccesspolicy.xml,在本例中,这是我自托管的 WCF 服务的地址。
任何帮助都会很棒。
这是我的代码,我不知道我是否酿造了一些好东西。我的 app.config 文件位于此处。我认为这是一个端点问题,但我不确定。 http://213.46.36.140/app.config.txt
namespace WindowsFormsApplication11
{
public partial class Form1 : Form
{
public ServiceHost _host = null;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
_host = new ServiceHost(typeof(WmsStatService));
_host.Open();
}
}
// Define a service contract.
[ServiceContract(Namespace = "http://WindowsFormsApplication11")]
public interface IWmsStat
{
[OperationContract]
string sayHello(string name);
[OperationContract, WebGet(UriTemplate = "/clientaccesspolicy.xml")]
Stream GetSilverlightPolicy();
}
public class WmsStatService : IWmsStat
{
public string sayHello(string name)
{
return "hello there " + name + " nice to meet you!";
}
Stream StringToStream(string result)
{
WebOperationContext.Current.OutgoingResponse.ContentType = "application/xml";
return new MemoryStream(Encoding.UTF8.GetBytes(result));
}
public Stream GetSilverlightPolicy()
{
// result cointains the clienaccpolicy.xml content.
//
string result = @"<?xml version=""1.0"" encoding=""utf-8""?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers=""*"">
<domain uri=""*""/>
</allow-from>
<grant-to>
<resource path=""/"" include-subpaths=""true""/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>";
return StringToStream(result);
}
}
}