安装VSTFS后遗症解决方法

【关键字】

    VSTFS2005 HTTP 404错误 程序集局部信任

【摘要】

    VSTFS作为微软推出的重量级武器,不仅安装颇为麻烦,其安装配置也是十分麻烦。不仅如此,安装VSTFS之后还会给原来的服务器留下一些后遗症。

    这些后遗症主要表现在两个方面,一是原来所有的虚拟服务器都不可以使用,二是安全控制策略发生了变化,使有些声明了权限要求的程序集不能正确调用,本文是作者解决以上问题的过程记录和采用的方法。如果采用本文描述的方法不能解决您的问题,请根据自己的实际情况来处理。

网站无法打开

 

公司最近决定使用VSTS作为软件过程管理工具,需要将原来的SourceSafe迁移到VSTS上,因为安装VSTS很多次了,比较有经验了,所以安装的过程很顺利,经过一些配置就可以使用了。但是测试人员不久就报告正在测试的系统突然不能使用了,从现象看是Web Services无法访问。

登录服务器,进入IIS管理器,打开以前配置好的Web Services,结果无一例外的提示HTTP 404错误,我以为仅仅是Web Services是这样,打开其他的纯网页的网站,结果依然提示HTTP 404错误。头一下就大了!!以此开始了痛苦的排错之旅。

  • 尝试一:
  1. 新建一个虚拟目录。
  2. 在虚拟目录中用记事本建一个空白html文件
  3. 从IIS管理器中浏览该html文件

提示:http404错误。失败。

 

  • 尝试二:
  1. 检查原来的所有虚拟目录,发现应用程序池全部被更改为TFSVSS。
  2. 删除原来的Web Services虚拟目录,重新创建虚拟目录,将应用程序池设为DefaultAppPool。
  3. 从IIS中浏览asmx文件,提示无法找到配置库。失败。
  4. 将应用程序池恢复为TFSVSS,提示HTTP404错误。失败。

     

  • 尝试三:
  1. 对虚拟目录所在的物理文件夹授予everyone最高权限。
  2. 对c:\windows\temp授予everyone最高权限。
  3. 对C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files授予everyone最高权限。

提示:http404错误。失败。

 

  • 尝试四
  1. 检查网站HTTP头,无异常现象。
  2. 授予aspnet用户,network service用户,terminal server user,IIS_WPG,IUSR_Computername最高权限。
  3. 将web services设置为允许匿名访问,匿名用户为超级用户

提示:http404错误。失败。

 

  • 尝试五
  1. 新建应用程序池,将标识改为超级用户
  2. 将web services的应用程序池改为上述应用程序池
  3. 浏览web services

提示:http 404错误。失败。

 

以上所做的尝试都是根据HTTP 404错误常见的错误原因来排除的。但是最后的结果无一例外失败。在一筹莫展之际,调整了应用程序池,问题却意外的解决了。

以下是我解决本问题采用的步骤:

  1. 新建应用程序池。
  2. 将应用程序池的标识设置为IWAM_<Computername>,也就是IIS 进程启动帐户,而不是预定义帐号。
  3. 授予IWAM_<Computername>对虚拟目录的物理文件夹授予必要的权限。
  4. 将虚拟目录的应用程序池改为上述步骤创建的应用程序池。
  5. 重新浏览web services。

OK!问题解决!!

 

无法访问局部信任程序集

 

本以为上面的问题解决以后,我们的程序应该可以正常的使用了,然而开始使用Web Services的使用,报错提示App_code.dll无法访问局部信任的程序集。

在发布web站点的时候,的确有个选项可以使用该特性,但是发布的程序集也就是App_code.dll必须强名之后才能设置该特性,而我们的程序集在开发环境下都没有经过强名,而是发布之后才强名的,所以这一条路是行不通的。

尝试一:

  1. 使用.net configuation配置工具,将声明了权限的程序集加入到各个级别的代码组中,设置为FullTrust权限集。
  2. 重新启动服务器。

但是无法使用。失败。

尝试二:

  1. 打开caspol.exe
  2. 运行以下命令caspol –af <assemblyname>,将程序集加入到完全信任的程序集中
  3. 重新启动服务器。

但是无法使用。失败。

 

解决方法:

在web services站点的web.config文件中添加以下行就可以了。

<trust level="Full" />

但是本解决方法会存在安全漏洞。如果谁有好的解决方法,请告诉我。

posted @ 2008-04-26 13:06  释子  阅读(2622)  评论(9编辑  收藏  举报