首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asp.net mvc应用程序部署/安全问题

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

Stack Overflow用户
提问于 2010-06-11 07:07:16
回答 3查看 1.5K关注 0票数 0

我将从appologies开始,我不确定这是否最好在这里发布服务器故障,所以如果它在错误的地方,那么请移动:)

基本信息

我已经编写了一个新应用程序的第一个模块。这是使用Visual 2010编写的,目前使用的是.net 3.5和asp.net mvc 2。在VS的内置开发服务器上运行时,这是很好的,但是一旦部署到IIS7/7.5,它就不能工作了。

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

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

问题#1

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

问题2

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

对路径'\fileserver\folder\file.tif‘的访问被拒绝描述:在执行当前web请求期间发生了未处理的异常。请查看堆栈跟踪以获得有关错误的更多信息,以及它起源于代码的位置。 异常详细信息: System.UnauthorizedAccessException:对路径'\fileserver\folder\file.TIF‘的访问被拒绝。 ASP.NET未被授权访问请求的资源。考虑将资源的访问权限授予ASP.NET请求标识。ASP.NET具有一个基本进程标识(通常是IIS 5上的{MACHINE}\ASPNET或IIS 6上的网络服务),如果应用程序不是模拟的,则使用该标识。如果应用程序是通过模拟进行模拟的,则标识将是匿名用户(通常是IUSR_MACHINENAME)或经过身份验证的请求用户。

因为这是在另一个服务器上,所以用户是不可访问的。为了解决这个问题,我试过:

1-将应用程序池设置为以域管理员的身份运行(我知道这是一个安全风险,但我现在只是想让它正常工作!)

2-将万维网发布服务的日志帐户设置为域管理。当我试图重新启动服务时.

Windows无法在本地计算机上启动万维网发布服务。 错误1079:为该服务指定的帐户与在同一进程中运行的其他服务指定的帐户不同。

任何指点/帮助都是徒劳无功的,因为我正在把我的头发拔出来(我只剩下一点点了)。

更新

我一直在使用我发现的这个古怪的小工具- DelegConfig v2 beta (委托/v2配置工具)。这真的很有用。因此,我已经访问了文件共享(有一个测试页面可以读取文件),所以现在我遇到了将用户凭据传递到Server的问题(这不是我的选择!)执行查询等,但我无法让它以用户身份登录。它试图以"NT Authority\Network Service“的形式访问它,它没有sql登录(应该是登录用户)。

我的连接字符串是:

代码语言:javascript
复制
<add name="User" connectionString="Data Source=.;Integrated Security=True" providerName="System.Data.SqlClient" />

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

到目前为止,我真的很精通所有的帮助!

还有什么线索吗?!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-14 11:05:28

最后一件事是在星期五我让它起作用了..。

正如我在更新中所说的,整理凭据委派的工具非常方便,有助于设置正确的SPN记录。

当我将凭据传递到服务器时,我发现我还必须为SQL设置它。我发现停止连接的另一件事是导致问题的一些入站windows防火墙设置。

对于连接字符串,我必须更新到:

代码语言:javascript
复制
<add name="ConnectionStringName" connectionString="Data Source=.;Integrated Security=SSPI;Trusted_Connection=True" providerName="System.Data.SqlClient" />

我认为有用的链接:

Kerberos身份验证和SQL Server

DelegConfig

即使是这样,它主要谈论的是共享点. 也是有用的。

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

票数 0
EN

Stack Overflow用户

发布于 2010-06-11 08:03:23

问题2-你的选择是:

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

对更新的响应:

您需要确保Kerberos身份验证适用于Server。运行查询select auth_scheme from sys.dm_exec_connections where session_id=@@spid;它将返回NTLM或KERBEROS。如果是NTLM,则需要做一些配置Server以使用Kerberos的工作。在AD中为SQL服务帐户设置SPN:setspn -A MSSQLSvc/<SQL Server FQDN>:1433 <Domain>\<Sql Service Account>,重新启动Server并再次尝试查询。您必须使用TCP/IP作为连接机制(这是默认的)。

如果您没有初始目录,则需要确保所有用户登录都有他们可以访问的默认数据库。我会亲自选择一个数据库作为初始目录,因为根据登录的配置方式,您可能会得到不同的行为。

票数 1
EN

Stack Overflow用户

发布于 2010-06-11 08:02:14

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

问题1:也许你有一个误导性的URL作为表单的动作?还是一个被抓住并被忽视的例外?您的global.asax.vb中有一个onError事件吗?

代码语言:javascript
复制
Sub Application_Error()
    Dim ex As Exception = Server.GetLastError
    ' NOW HANDLE THE EXCEPTION --> REPORTING :-)
End Sub

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3020832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档