我正在建立一个Silverlight应用程序,而我们希望能够有一个客户打url like:

http://{客户}.domain.com/

和登陆,那里的{客户}一部分是他们的商业名称。因此例如谷歌的将是:

http://google.domain.com/

我想知道的是如果任何人已经能够在silverlight,以便能够使用这个域名的模型做出决定的呼吁网络服务器,以便可以切换到一个特定的数据库运行查询?不幸的是,它的东西,是非常必要的项目,因为我们正在试图使它容易对其雇员获得他们的公司具体的信息,为我们的软件。

有帮助吗?

解决方案

它不会的工作,以把服务放在一个特定的域本身,例如wcf.example.com,然后设置一个跨领域的政策文件服务,以允许其访问吗?

只要这个会工作,你可以负载控在适当的子,然后通过子到你的服务,让它做的事情。

一些这样的例子如下:

其他提示

在服务器端,您可以检查HTTP 1.1主机标头,以查看用户如何访问您的服务器并根据该标准进行必要的自定义。

我认为你不能单独使用Silverlight,我知道你不能没有Javascript,Ajax等问题。这是因为出于安全原因,子域是由浏览器处理的子页面以外的。

以下想法如何:在网络服务器软件中插入重写规则。因此,如果调用 http://google.domain.com ,则Web服务器本身会将URL重写为类似的内容 http://www.domain.com/google/ (或更好: http://www.domain.com/customers/google/ )。那会有帮助吗?

的Georgi:

如果它是静态的,那将有所帮助,但唉,这将是动态的。我希望为应用程序部署1x,并使用 http://google.domain.com/想法切换到用户的正确数据库。我记得当我们构建一个asp.net网站时,使用域上下文来确定要使用的皮肤等等。

Ates:你能解释一下你所说的话吗......听起来你已经接近我想要的了。你有没有看过这样的教程?

我想出这个工作的唯一另一种方法是使用一个元数据库,当用户登录时,它会根据需要将它们切换到相应的数据库...只是想到告诉客户端x点击:

http://ClientX.domain.com/ 本应比说 http://www.domain.com/ 并登录。看起来好像他们打了他们的名字,并且从登录屏幕直接向他们展示它对客户群来说更具吸引力。

@Richard B:不,我想不出以前见过的任何这样的教程。我会试着更加冗长。

更详细的服务器端方法:

  1. 将* .example.com指向DNS设置中的相同IP。
  2. 处理登录的后端应用程序检查 Host HTTP标头(例如某些平台中的“HTTP_HOST”服务器变量)。这将包含客户端用于到达您的服务器的确切subdomain.example.com。提取子域部分并继续...
  3. 还可以采用仅限客户端的方法。我对Silverlight了解不多,但我假设你应该能够将Silverlight与JavaScript连接起来。您可以使用JavaScript读取 document.location 并将其传递给Silverlight applet,其中进一步的数据获取等逻辑将依赖于JavaScript传入的子域。

@Ates:

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

因此,例如,当您拥有{client} .example.com和{sandbox} .example.com时,无法向两者注册WCF服务。它也不能只注册到* .example.com或example.com,因此这就是catch 22进入的地方。其他一切我都有先前的处理知识。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top