代码之家  ›  专栏  ›  技术社区  ›  WestDiscGolf

Asp.net mvc应用程序部署/安全问题

  •  0
  • WestDiscGolf  · 技术社区  · 14 年前

    我将从同位语开始;我不确定这是否是最好的服务器故障张贴在这里,所以如果它在错误的地方,那么请移动:-)

    基本情况

    我已经在工作中编写了新应用程序的第一个模块。这是使用Visual Studio 2010编写的,目标是.net 3.5(目前)和asp.net mvc 2。在VS的内置开发服务器上运行的开发过程中,这项功能运行良好,但一旦部署到IIS 7/7.5,就不起作用。

    为了部署应用程序,我在发布模式下构建了它,并通过右键单击解决方案资源管理器中的项目创建了一个部署包(从beta版升级后,这将通过自动构建tfs来完成)。然后将其导入服务器上的IIS。

    应用程序正在使用windows/域身份验证。

    我可以启动internet explorer,并从客户端计算机和远程桌面连接浏览到应用程序。我可以执行从远程桌面上的IE实例读取/存储会话数据的代码,但是如果我从客户端pc浏览到它,它似乎会丢失会话状态。我点击表单提交,页面刷新,没有执行所需的代码。我试着去适应;InProc、SQLServer和StateServer。但运气不好:-(

    作为应用程序的一部分,它可以动态查看PDF和Tiff文档,这些文档位于办公网络上的网络共享上,如果以前没有查看过文档,则会创建缩略图。如果在应用程序部署到的机器上运行,那么这是可行的;但是,当从客户端pc浏览时,我会收到一个错误消息:

    拒绝访问路径“\\fileserver\folder\file.tif” 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误的详细信息以及错误在代码中的起源。

    异常详细信息:System.UnauthorizedAccessException:拒绝访问路径“\\fileserver\folder\file.TIF”。

    由于这是在另一台服务器上,用户无法访问。为了解决这个问题,我试过:

    2-将万维网发布服务的登录帐户设置为域管理员。当尝试重新启动服务时,我得到。。。

    Windows无法在本地计算机上启动万维网发布服务。

    错误1079:为此服务指定的帐户与在同一进程中运行的其他服务指定的帐户不同。

    当我把头发拔出来(剩下的一点点)的时候,任何的指示/帮助都会非常感激。


    更新

    我一直在用我找到的这个时髦的小工具- DelegConfig v2 beta (Delegation / Kerberos Configuration Tool)

    我的连接字符串是:

    <add name="User" connectionString="Data Source=.;Integrated Security=True" providerName="System.Data.SqlClient" />
    

    没有指定初始目录,因为系统在多个数据库上(这也不是我的选择!!)。

    还有什么线索吗?!

    3 回复  |  直到 4 年前
        1
  •  1
  •   Sam    14 年前

    问题2-你的选择是:

    • 配置委派(双跳身份验证)-我还没有在IIS7上完成此操作,它与6有点不同,但我相信您需要在AD中为委派启用web服务器计算机帐户,并为web服务器创建SPN(例如 setspn -A http/<Web Server FQDN> <Domain>\<Machine Name> ). 排除Kerberos故障可能相当痛苦。
    • 向(域)应用程序池帐户授予对网络资源的访问权限,并确保启用了匿名身份验证( <anonymousAuthentication enabled="true" userName="" defaultLogonDomain="" /> )

    对更新的响应:

    select auth_scheme from sys.dm_exec_connections where session_id=@@spid ; 它将返回NTLM或KERBEROS。如果是NTLM,则需要对sqlserver进行一些配置以使用Kerberos。在AD中为SQL服务帐户设置SPN: setspn -A MSSQLSvc/<SQL Server FQDN>:1433 <Domain>\<Sql Service Account> ,重新启动SQL Server,然后重试查询。必须使用TCP/IP作为连接机制(这是默认设置)。

        2
  •  0
  •   OlafW    14 年前

    有了这一小部分信息,我只能给出一些提示:

    问题1: 也许你有一个误导性的网址作为行动的形式?或是被抓住的&忽略异常?您的global.asax.vb中是否有onError事件?

    Sub Application_Error()
        Dim ex As Exception = Server.GetLastError
        ' NOW HANDLE THE EXCEPTION --> REPORTING :-)
    End Sub
    

    我最近也遇到了同样的例外-我必须检查用户对此文件夹的访问权限,并将appPool标识设置为“NETWORKSERVICE”。在您的情况下,您甚至尝试访问一个网络文件夹-检查服务器上的访问权限,并尝试使用IP而不是名称-这可能是一个名称解析问题?!

    很抱歉这一小部分信息。。。这看起来像是只有在运行的服务器上使用直接调试选项才能解决的问题。

        3
  •  0
  •   WestDiscGolf    14 年前

    最后一件事是在周五我让它工作。。。

    正如我在更新中所说的那样,用于整理凭证委派的工具非常方便,并且有助于无休止地设置正确的SPN记录。

    <add name="ConnectionStringName" connectionString="Data Source=.;Integrated Security=SSPI;Trusted_Connection=True" providerName="System.Data.SqlClient" />
    

    我发现有用的链接:

    Kerberos Authentication and SQL Server

    DelegConfig

    即使它主要讨论的是Sharepoint。。。 this 也很有用。

    希望这对将来的人们有所帮助。