【发布时间】:2012-03-13 17:16:45
【问题描述】:
对这一切感到非常沮丧,希望有人能提供帮助。
我有一个 Silverlight 应用程序和 WCF 一起工作一年没有问题。为了让他们工作,我最初有些痛苦,但最终在帮助下解决了。所有的痛苦都来自配置/安全、401、跨域地狱等。
我进行所有设置的方式是,我有一个 WCF 服务,它驻留在它自己的应用程序/目录中,并在它自己的应用程序池中运行。
在同一个 Web 服务器 (IIS7) 上,我有另一个应用程序/目录,其中包含指向上述服务的 Silverlight 应用程序。
服务器名称(对于本练习)是 WEBSERVER1。我们为它创建了一个 CNAME,即 WEB1。过去,如果用户访问http://WEB1/MyApp/ 或http://WEBSERVER1/MyApp/,它会起作用。昨天突然开始表现不好。普通用户开始收到 Windows 质询/响应提示(即使他们输入了信息,他们也会收到 401 错误)。
我的 WCF 服务在允许匿名访问的站点中运行(这一直有效)。 我的 Silverlight 应用程序在一个集成了 Windows 的站点中运行(这一直有效),因为我在它们连接时捕获了 Windows 用户名。
作为记录,我昨天确实创建了一个新的应用程序池,其中运行了一个 ASP.NET 应用程序。这似乎工作正常,但有可能创建这个新的应用程序池和应用程序/目录已经导致一些变化。
我的 wwwroot 文件夹以及上述两个应用程序的每个文件夹中都有一个 clientaccesspolicy.xml(以防万一)。我曾尝试将 NTLM 推广为提供者而不是 Negotiate(因为这适用于我在另一台服务器上遇到的另一个问题)。
在尝试了一些更改之后,我什至无法让每次调用它时都表现得一样。有时它会提示我输入凭据。其他时候它会工作,但后来说它无法与 WCF 服务连接,并显示“未找到”。其他时候它实际上可以正常工作,但前提是我使用的是实际的服务器名称而不是 CNAME。使用 CNAME 时,我总是遇到跨域错误,即使我在每个目录根目录中都有跨域 xml 文件。
这是一场噩梦,相比之下,高级算法分析看起来既有趣又容易。 Microsoft 是否意识到他们使这种组合(IIS7/WCF/Silverlight/providers/permissions/神秘或缺少错误消息)开始工作有多么困难?
【问题讨论】:
-
你能运行 Fiddler 并在此处添加日志,以便我们查看发生了什么吗? fiddler2.com 供下载。
-
我实际上是在运行 Fiddler2,会尝试用日志更新
-
不确定如何在此处添加日志,但有一行查找根目录并获得 200(成功)。下一行查找 /app/Silverlight.js,它返回 304(缓存?)。下一行是 /clientaccesspolicy.xml 的 401 错误(即使该文件存在),下一行是 /crossdomain.xml 文件的 401。
标签: wcf silverlight iis-7