• 安装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" />

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

  • 相关阅读:
    当我有一台服务器时我做了什么
    git 安装及基本配置
    关于大厂面试中问到的二十几个 HTTP 面试题
    日问周刊 | 全栈面试汇总 | 第七期
    dockerfile 最佳实践及示例
    面试官:如果 http 响应头中 ETag 值改变了,是否意味着文件内容一定已经更改
    Nginx 反向代理时获取用户的真实 IP
    Go 语言实现 HTTP 层面的反向代理
    Go 语言中的 Http 路由基础
    Json Schema
  • 原文地址:https://www.cnblogs.com/yanrongpi/p/1172074.html
Copyright © 2020-2023  润新知