6

我正在使用带有 secutiry trimming的默认站点地图提供程序。但是,有些方法,我得到:

建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。

我认为站点地图提供商正在错误的位置寻找角色。我的配置是这样的:

<connectionStrings>
   <add name="DB" ... />
</connectionStrings>


   <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
      <providers>
        <clear/>
        <add name="SqlProvider" .../>
      </providers>
    </membership>
    <roleManager enabled="true">
      <providers>
        <add connectionStringName="DB"  type="System.Web.Security.SqlRoleProvider" ... />
      </providers>
    </roleManager>

Sitemap 标签的定义如下:

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true"  >
      <providers>
          <clear/>
          <add name="XmlSiteMapProvider"
            description="Default SiteMap provider."
            type="System.Web.XmlSiteMapProvider "
            siteMapFile="Web.sitemap"
            securityTrimmingEnabled="true"  />
      </providers>
  </siteMap>

为什么我收到 sql 错误?修剪如何获得角色?

编辑: ysod

4

5 回答 5

2

您的屏幕截图中的核心错误是

建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server

不幸的是,这被截断了。该消息通常会以“已配置为允许远程连接。 ”继续,并且这可能会进一步跟随特定原因(例如,它可能声明(在各种其他原因中)“提供者:SQL 网络接口,错误:26 – 错误定位服务器/指定的实例”)

但是,根据您目前收到的消息,它看起来像是客户端计算机和 SQL Server 框之间的连接问题。因此,我首先会考虑对 SQL Server 机器和网络连接进行尽职调查:

  • SQL Server 服务器名称可以解析
  • 可以通过 ping 访问服务器
  • 该 SQL 服务器配置为接受远程连接
  • SQL Browser 服务正在 SQL Server 框中运行
  • Windows 防火墙不会妨碍您
  • SQL Server 本身实际上首先在运行

如果他们通过了,那么您需要验证才能登录。我通常会使用 SQL 管理工具,尤其是命令行工具sqlcmd来测试基本连接(例如:sqlcmd -E -S mysqlserver\instance连接到默认数据库或sqlcmd -E -S mysqlserver\instance -d database连接到特定数据库)。显然,您需要以运行 Web 应用程序的用户身份运行它们,否则它们将尝试以您的身份进行身份验证(使用runas或在不同凭据下启动命令提示符 [然后在开始菜单中找到命令提示符, shift-右键单击->“以其他用户身份运行]。

但是,如果您可以获得完整的错误消息文本(而不是截断的版本),最终会有所帮助,那么这可能有助于缩小您遇到的具体问题。

于 2012-02-21T14:54:15.580 回答
0
于 2012-02-21T19:35:56.220 回答
0

试试这个工作站点地图:

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
  <providers>
    <add name="XmlSiteMapProvider" description="SiteMap provider which reads in .sitemap XML files." type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" siteMapFile="web.sitemap" securityTrimmingEnabled="true" />
  </providers>
</siteMap>
于 2012-02-17T03:11:46.577 回答
0

如果 SqlRoleProvider 在没有启用安全修剪的情况下工作,我的第一个猜测是您的数据库或连接字符串有一些东西阻止了多个同时连接。DB如果您可以提供连接字符串的详细信息,这将更容易评估......

于 2012-02-21T17:06:27.843 回答
0

我会尝试只使用默认角色提供者和安全调整来制作一个全新的项目,看看你是否可以让它工作。

于 2012-02-21T16:47:53.203 回答