站点地图安全修整会引发SQL错误

rob*_*sta 6 c# asp.net asp.net-membership roleprovider sitemapprovider

我正在使用默认的Sitemap提供程序进行安全修整.但是,有些如何,我得到:

建立与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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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

编辑: ysod

Chr*_*s J 2

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

\n\n
\n

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

\n
\n\n

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

\n\n

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

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

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

\n\n

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

\n