2012-02-07 40 views
6

Tôi đang sử dụng nhà cung cấp Sơ đồ trang web mặc định with secutiry trimming. Nhưng, một số cách, tôi nhận được:Cắt an ninh Sơ đồ trang web ném lỗi SQL

A network-related or instance-specific error occurred while establishing a connection to SQL Server.

Tôi nghĩ nhà cung cấp sơ đồ trang web đang tìm kiếm vai trò ở vị trí không chính xác. cấu hình của tôi là như thế này:

<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> 

Thẻ Sơ đồ trang web được định nghĩa như thế này:

<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> 

Tại sao tôi nhận được lỗi sql? Làm thế nào để cắt tỉa có được vai trò?

EDIT: the ysod

+0

Xin chào, bạn có thể vui lòng đưa ra các ngoại lệ chính xác mà bạn đang nhận được bất kỳ + stack trace. –

+0

Và bạn hoàn toàn chắc chắn rằng kết nối DB là, trên thực tế, chính xác? – Vedran

+0

Là asp của bạn: sitemapdatasource sau đó như

Trả lời

2

Lỗi lõi từ ảnh chụp màn hình của bạn là

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server

tiếc, điều này được cắt ngắn. Thông báo sẽ bình thường sau đó tiếp tục với "được định cấu hình để cho phép kết nối từ xa." và điều này có thể được theo sau bởi một lý do cụ thể (ví dụ: có thể trạng thái (trong số các lý do khác) "nhà cung cấp: Giao diện mạng SQL , lỗi: 26 - Lỗi định vị máy chủ/cá thể được chỉ định ")

Tuy nhiên, với thư bạn có cho đến nay, có vẻ như sự cố kết nối giữa máy khách và hộp SQL Server. Vì vậy, tôi muốn nhìn vào làm do-siêng năng chống lại hộp SQL Server và kết nối mạng đầu tiên:

  • SQL tên máy chủ Server có thể giải quyết
  • Đó là máy chủ có thể đạt được với ping
  • Đó SQL server được cấu hình để chấp nhận các kết nối từ xa
  • Đó là dịch vụ SQL Browser đang chạy trên hộp SQL server
  • Đó Windows Firewall không nhận được trong cách
  • Đó SQL server riêng của mình là thực sự chạy trong f irst place

Nếu vượt qua thì bạn cần xác thực hơn bạn có thể đăng nhập. Tôi thường sử dụng các công cụ quản lý SQL, đặc biệt là công cụ dòng lệnh sqlcmd để kiểm tra kết nối cơ bản (ví dụ: sqlcmd -E -S mysqlserver\instance để kết nối với cơ sở dữ liệu mặc định hoặc sqlcmd -E -S mysqlserver\instance -d database để kết nối với cơ sở dữ liệu cụ thể). Rõ ràng bạn sẽ cần phải chạy chúng như người dùng mà ứng dụng web của bạn đang chạy, nếu không họ sẽ cố gắng xác thực như bạn (hoặc sử dụng runas hoặc bắt đầu lời nhắc lệnh dưới các chứng chỉ khác nhau [tìm lời nhắc lệnh trong menu bắt đầu rồi , shift-right-click -> "Chạy với tư cách người dùng khác]

Tuy nhiên, điều cuối cùng sẽ giúp ích nếu bạn có thể nhận được thông báo lỗi đầy đủ (thay vì phiên bản cắt ngắn), điều đó có thể giúp thu hẹp vấn đề cụ thể bạn đang gặp phải.

0

Hãy thử sitemap làm việc này:

<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> 
+0

vẫn ném cùng một lỗi. :( – robasta

0

Tôi sẽ thử tạo một dự án hoàn toàn mới chỉ với nhà cung cấp vai trò mặc định và trang trí bảo mật và xem bạn có thể làm việc đó không.

0

Nếu SqlRoleProvider hoạt động mà không bật tính năng bảo mật, lần đầu tiên tôi đoán là có điều gì đó về cơ sở dữ liệu hoặc chuỗi kết nối đang ngăn nhiều kết nối đồng thời. Điều này sẽ khá đơn giản để đánh giá nếu bạn có thể cung cấp chi tiết về chuỗi kết nối DB của bạn ...

0

Nhìn chung, cấu hình có vẻ chính xác. Theo thông báo của ngoại lệ, cơ sở dữ liệu không có sẵn. Bạn có kiểm tra xem cơ sở dữ liệu có thể được kết nối không?

using (SqlConnection connection = new SqlConnection()) { 
    connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DB"].ConnectionString; 
    try { 
     connection.Open(); 
    } 
    catch() { 
     ... 
    } 
} 

“Steps to troubleshoot SQL connectivity issues”

Các vấn đề liên quan