如何在IIS 7上发布MVC 4项目

时间:2014-09-30 04:49:05

标签: asp.net-mvc-4 iis-7 sql-server-2008-r2

我正在尝试使用SQL Server 2008 R2在IIS 7.0上发布MVC 4.0项目。 我使用“Windows身份验证”,我的连接字符串是

   <add name="PFTMEntities" connectionString="metadata=res://*/PFModel.csdl|res://*/PFModel.ssdl|res://*/PFModel.msl;provider=System.Data.SqlClient;provider connection string=&quot; data source=DEW-PC\SQLEXPRESS;initial catalog=PFTM;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework;persist security info=True;&quot;" providerName="System.Data.EntityClient" />

当我构建这个项目并从VS'12运行时,它不会给出任何异常,但是当我要从本地服务器发布这个项目时,它会给出以下异常

enter image description here

2 个答案:

答案 0 :(得分:0)

取决于您的ASP.NET应用程序的三种方案

  1. (由于性能不推荐)您的ASP.NET使用Windows身份验证,登录的用户可以访问MS SQL数据库

    在这种情况下,您可以使用模拟使用与登录用户相同的凭据来连接到数据库

  2. <configuration>
      <system.web>
        <authentication mode="Windows"/>
        <identity impersonate="true"/>
      ...
      </system.web>
    </configuration>
    
    1. (推荐)您的ASP.NET作为NetworkService或具有有限权限的用户运行。您的Web服务器和数据库都在同一台计算机或同一个域

      在MS SQL数据库上授予您的ASP.NET正在使用的帐户(例如NetworkService)login权限

      如果您的Web服务器和数据库位于不同的计算机上,您必须授予对Web服务器的登录和访问权限(使用以下命令)并将domainName\WebServerMachineName$置于数据库角色

    2. exec sp_grantlogin 'domainName\WebServerMachineName$'
      exec sp_grantdbaccess 'domainName\WebServerMachineName$'
      
      1. (推荐)您的ASP.NET作为AppPoolIdentity运行,不得更改为其他帐户 OR 以上两者均不适用

        您必须在MS SQL Server上启用混合身份验证,并切换为使用用户名和密码作为连接字符串

      2. 来源:http://msdn.microsoft.com/en-us/library/ff647396.aspx

答案 1 :(得分:-1)

网站上的数据库配置有几个方面可能会导致问题。

  1. 服务器是使用Express版还是正式版的SQL Server? 您可以尝试将“data source = DEW-PC \ SQLEXPRESS”更改为“data source =。”。

  2. SQL Server是否允许Network_Service访问PFTM数据库? 您需要在SQL Server 2008 R2中为Network_Service创建登录名,并在PFTM数据库中创建用户。