Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 使用子域标识客户端_Silverlight_Web Services_Subdomain - Fatal编程技术网

Silverlight 使用子域标识客户端

Silverlight 使用子域标识客户端,silverlight,web-services,subdomain,Silverlight,Web Services,Subdomain,我正在构建一个Silverlight应用程序,而我们希望能够让客户端点击url,如: http://{client}.domain.com/ 和登录,{client}部分是他们的企业名称。例如,谷歌的目标是: 我想知道的是,在silverlight中,是否有人能够使用这个子域模型来决定对web服务器的调用,以便您可以切换到特定的数据库来运行查询?不幸的是,这对项目来说是非常必要的,因为我们正在努力使他们的员工能够轻松地获取他们公司特定的软件信息。在服务器端,您可以检查HTTP 1.1主机头,查看

我正在构建一个Silverlight应用程序,而我们希望能够让客户端点击url,如:

http://{client}.domain.com/

和登录,{client}部分是他们的企业名称。例如,谷歌的目标是:


我想知道的是,在silverlight中,是否有人能够使用这个子域模型来决定对web服务器的调用,以便您可以切换到特定的数据库来运行查询?不幸的是,这对项目来说是非常必要的,因为我们正在努力使他们的员工能够轻松地获取他们公司特定的软件信息。

在服务器端,您可以检查HTTP 1.1主机头,查看用户是如何进入您的服务器的,并在此基础上进行必要的自定义。

我认为单靠Silverlight无法做到这一点,我知道,如果没有Javascript、Ajax等方面的问题,您无法做到这一点。这是因为出于安全原因,浏览器对子域的处理不同于子页面

以下想法如何:在web服务器软件中插入重写规则。因此,如果调用,web服务器本身会将URL重写为类似或更好的内容:。那会有帮助吗?

格奥尔基:

如果它是静态的,这会有所帮助,但唉,它将是动态的。我的希望是为应用程序部署1x,并利用这个想法为用户切换到正确的数据库。我记得有一次我们在构建asp.net网站时这样做过,使用域上下文来确定要使用什么皮肤,等等

艾兹:你能解释一下你在说什么吗。。。听起来你很接近我想说的。你看过这样的教程吗

我想出的另一种方法是使用一个元数据库,当用户登录时,它会根据需要将他们切换到适当的数据库。。。我只是想告诉客户x点击:


会比说点击并登录更甜蜜。似乎他们要打出自己的名字,而在登录屏幕上为他们显示个性化的名字对客户群来说会更有吸引力。

@Richard B:不,我想不出我以前看过的任何这样的教程。我会尽量说得更详细些

更详细地介绍服务器端方法:

将*.example.com指向DNS设置中的同一IP。 处理登录的后端应用程序检查主机HTTP头,例如某些平台中的HTTP_主机服务器变量。这将包含客户端用于访问服务器的确切subdomain.example.com。提取子域部分并继续。。。 也可以采用仅客户端的方法。我对Silverlight了解不多,但我假设您应该能够将Silverlight与JavaScript接口。您可以使用JavaScript读取document.location并将其传递给Silverlight小程序,然后进一步获取数据等。逻辑将依赖于JavaScript传入的子域。

@ate:

这就是我们在编写ASP.Net系统时所做的。。。我们针对web服务器推送了大量*.example.com主机,并使用HTTP头进行处理。当处理WCF在客户端和服务器之间推送信息时会出现阻塞。。。它只能存在于一个域中

因此,例如,当您有{client}.example.com和{sandbox}.example.com时,WCF服务不能同时注册到这两个站点。它也不能只注册到*.example.com或example.com,所以catch 22就是在这里注册的。其他一切我都事先知道如何处理


我记得有一种方法,应用程序可以在某些情况下欺骗另一个域名。我想在这种情况下,我需要做这样的配置吗?我相信还有很多需要研究的地方。

将服务放在特定的子域(例如wcf.example.com)上,然后在服务上设置一个跨域策略文件以允许它访问它,这难道不管用吗

只要这样做有效,您就可以将silverlight加载到适当的子域中,然后将该子域传递给您的服务,让它完成它的工作

这方面的一些例子如下:


令人惊叹的我以为微软的开发人员也会做类似的事情。很高兴他们做到了!我认为这肯定会奏效。我们拭目以待。