【问题标题】:IIS7 + WCF + Silverlight problemsIIS7 + WCF + Silverlight 问题
【发布时间】:2011-02-04 05:02:10
【问题描述】:

我一直在构建 Silverlight 应用程序和 WCF 服务一段时间,最近尝试将它们托管在 IIS7 中。

我在 Windows Server 2008 R2 上安装了 IIS7,并将这两个应用程序添加到我的默认网站。我遇到了很多问题,所以我希望你们中的一个可以帮忙...

1) silverlight 和 WCF 服务应用程序不适用于直通身份验证。设置应用程序时,我需要“连接为”管理员服务器帐户。我在网上读到,当您连接到另一台计算机时,您应该只需要使用“连接为”字段。如果我不提供管理员凭据,我会收到此错误。我必须在其他地方设置权限吗?

HTTP 错误 500.19 - 内部服务器错误 无法访问请求的页面 访问,因为该页面的相关配置数据是 无效的。详细的错误信息模块 IIS Web Core Notification BeginRequest 处理程序尚未确定错误代码 0x80070005 配置 错误 由于权限不足,无法读取配置文件 配置文件 \?\C:\Users\Administrator\Documents\My Dropbox\Research Masters\Project\WCFService\Website\web.config 请求的 URL http:://localhost:80/WCFService/Service.svc 物理路径 C:\Users\Administrator\Documents\My Dropbox\Research Masters\Project\WCFService\Website\Service.svc 登录方法 还没有 已确定登录用户尚未确定配置源-1: 0:链接和更多信息 读取 Web 服务器或 Web 的配置文件时出现问题 应用。在某些情况下,事件日志可能包含更多 有关导致此错误的原因的信息。

2) Visual Studio 生成了 2 个网页来运行我的 silverlight 应用程序(.html 和 .aspx)。当我运行 silverlight 应用程序(以管理员身份连接)时,我可以导航到 .html 页面,没问题。当我尝试打开 .aspx 文件时,出现以下错误

“/Platform”应用程序中的服务器错误。

访问被拒绝。

描述:访问所需资源时出错 来满足这个请求。您可能无权查看 请求的资源。

错误消息 401.3:您无权查看此目录 或使用您提供的凭据的页面(访问被拒绝,因为 访问控制列表)。请 Web 服务器的管理员给您 访问 'C:\Users\Administrator\Documents\My Dropbox\Research Masters\Project\Platform\Website\PlatformTestPage.aspx'。

版本信息:Microsoft .NET Framework 版本:4.0.30128; ASP.NET 版本:4.0.30128.1

3) WCF 服务运行良好(再次以管理员身份连接),直到我重新启动服务器。当我在重新启动后尝试运行 WCF 服务时,解决方案中似乎缺少 mysql 程序集。如果我只是重建解决方案并再次运行服务......它可以工作(直到下次重新启动)。是什么导致了这个错误?

这里的解决方案 - http://tinypic.com/view.php?pic=5yasqx&s=5

“/WCFService”应用程序中的服务器错误。

无法加载文件或程序集 'MySql.Data, Version=6.2.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' 或其之一 依赖关系。访问被拒绝。

描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。

异常详细信息:System.IO.FileLoadException:无法加载文件或 程序集'MySql.Data,版本=6.2.2.0,文化=中性, PublicKeyToken=c5687fc88969c44d' 或其依赖项之一。访问是 拒绝。

来源错误:

在执行过程中产生了一个未处理的异常 当前的网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。

装配负载跟踪:以下信息可能有助于 确定为什么程序集 'MySql.Data, Version=6.2.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' 无法加载。

警告:程序集绑定日志记录已关闭。启用程序集绑定 失败记录,设置注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 为 1。注意:有 是与装配绑定失败相关的一些性能损失 记录。要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

堆栈跟踪:

[FileLoadException: 无法加载文件或程序集 'MySql.Data, 版本=6.2.2.0,文化=中性,PublicKeyToken=c5687fc88969c44d' 或 它的依赖项之一。访问被拒绝。]
System.Reflection.RuntimeAssembly._nLoad(AssemblyName 文件名,字符串 codeBase,证据 assemblySecurity,RuntimeAssembly locationHint, StackCrawlMark& stackMark,布尔 throwOnFileNotFound,布尔 forIntrospection, Boolean suppressSecurityChecks) +0
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,证据 assemblySecurity,StackCrawlMark 和 stackMark, Boolean for Introspection, Boolean suppressSecurityChecks) +567
System.Reflection.RuntimeAssembly.InternalLoad(字符串组装字符串, 证据组装Security, StackCrawlMark& stackMark, Boolean forIntrospection) +192 System.Reflection.Assembly.Load(String 组装字符串)+35
System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(字符串 构造函数字符串,Uri[] baseAddresses) +243
System.ServiceModel.HostingManager.CreateService(字符串 标准化虚拟路径)+1423
System.ServiceModel.HostingManager.ActivateService(字符串 normalizedVirtualPath) +50
System.ServiceModel.HostingManager.EnsureServiceAvailable(字符串 normalizedVirtualPath) +1132

[ServiceActivationException:服务'/WCFService/Service.svc' 编译时出现异常,无法激活。这 异常消息是:无法加载文件或程序集'MySql.Data, 版本=6.2.2.0,文化=中性,PublicKeyToken=c5687fc88969c44d' 或 它的依赖项之一。访问被拒绝..]
System.Runtime.AsyncResult.End(IAsyncResult 结果) +889824
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult 结果)+179150
System.Web.AsyncEventExecutionStep.OnAsyncEventCompletion(IAsyncResult ar) +107

版本信息:Microsoft .NET Framework 版本:4.0.30128; ASP.NET 版本:4.0.30128.1

就是这样,希望有人阅读此消息,我浪费了周末的大部分时间试图自己解决这些问题...谢谢

【问题讨论】:

  • 这是我第一次使用 IIS7,所以这对我来说是全新的,所以我不知道如何正确设置服务器,我只是边走边学。前两个似乎被拒绝访问。我该如何解决这个问题?

标签: wcf silverlight iis-7


【解决方案1】:

我的建议:

1) 检查您的 Web 应用程序文件夹的权限。您应该编辑 Web 应用程序文件夹的权限,以便 IIS 用户可以读取该文件夹。 因此,您应该在 Windows 资源管理器中打开文件夹的文件夹属性对话框,并检查应用程序池用户是否至少具有读取权限。如果您没有为应用程序池提供其他用户,则默认用户应为 IIS_IUSRS。

2) 运行以下命令检查系统中是否启用了 asp.net:

如果您的系统中安装了 .Net 4: "%WINDIR%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe" –i 否则: "%WINDIR%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe" –i

上述命令将使用 IIS 注册/修复您的 .Net 安装。

3) 你的 mysql dll 是否位于 bin 文件夹中?我会检查您是否也有权读取此文件夹。如果 dll 与您的应用程序 dll 不在同一文件夹中,请检查该 dll 是否安装在 GAC 中。

问候,

【讨论】:

  • 因此,当您对文件夹说“编辑权限”时,您的意思是通过 Windows 资源管理器、属性、安全选项卡并添加 ISS 用户(我能找到的最接近的是 ISS_IUSRS - 对吗? )。如果您必须在 IIS 管理器中执行某些操作,您能否更具体一些。我刚刚开始使用 IIS,不知道自己在做什么。关于你的mysql答案。 mysql.dll 文件位于 WCF 服务库目录中,在项目中引用并在编译后复制到 bin 文件夹中。当我编译 WCF 服务网站时,它会导入 mysql.dll 和 library.dll 文件
  • 我的意思是使用 Windows 资源管理器编辑权限并检查您的应用程序池的用户是否具有读取权限。如果您没有更改用户,则默认应为 IIS_IUSRS。
【解决方案2】:

1) 授予 IIS_IUSRS 组文件夹的权限。 另请查看 IIS manager->“Application Pools”中应用程序的应用程序池是否将 Identity 设置为“LocalSystem”。对我来说是“NetworkService”,将其设置为“LocalSystem”即可解决。

【讨论】:

    【解决方案3】:

    您不能使用 IIS7 托管 silverlight 应用程序。 尝试使用 php / html 脚本在 apache 服务器上托管您的 silverlight 应用程序。

    希望对伴侣有所帮助 请评价我的回答

    安兹韦克斯

    【讨论】:

      猜你喜欢
      • 2013-11-19
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多