Sql निर्भरता फायरिंग नहीं है



asp.net webforms (1)

मैं पहली बार एसक्यूएल डीपेन्सेंसी की कोशिश कर रहा हूं। मुझे डाटाबेस अपडेट पर कोई सूचना नहीं मिल रही है

मैं अंदर ब्रेकपॉइंट रख रहा हूं: OnChange(object sender, SqlNotificationEventArgs e) ,

लेकिन यह कभी नहीं हिट हो जाता है

यहां मेरा कोड है:

    protected void Page_Load(object sender, EventArgs e)
    {

        Label1.Text = "Cache Refresh: " + DateTime.Now.ToLongTimeString();
        DateTime.Now.ToLongTimeString();
        // Create a dependency connection to the database.
        SqlDependency.Start(GetConnectionString());

        using (SqlConnection connection = new SqlConnection(GetConnectionString()))
        {
            using (SqlCommand command = new SqlCommand(GetSQL(), connection))
            {

                SqlDependency dependency =
                        new SqlDependency(command);

                    // Refresh the cache after the number of minutes
                    // listed below if a change does not occur.
                    // This value could be stored in a configuration file.
                                  connection.Open();

                dgHomeRequests.DataSource = command.ExecuteReader();
                    dgHomeRequests.DataBind();

            }
        }   
    }


    private string GetConnectionString()
    {
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.
        //return "Data Source=(local);Integrated Security=true;" +"Initial Catalog=AdventureWorks;";
        return ConfigurationManager.ConnectionStrings["TestData"].ConnectionString;
    }
    private string GetSQL()
    {
        return "Select [Address] From [UserAccount1]";
    }


    void OnChange(object sender, SqlNotificationEventArgs e)
    {
        // have breakpoint here:
        SqlDependency dependency = sender as SqlDependency;

        // Notices are only a one shot deal
        // so remove the existing one so a new 
        // one can be added

        dependency.OnChange -= OnChange;

        // Fire the event
       /* if (OnNewMessage != null)
        {
            OnNewMessage();
        }*/
    }

मैंने ग्लोबल.एएसएक्स फ़ाइल में कुछ कोड भी रखा है:

public class Global : HttpApplication
{
    void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        SqlDependency.Start(ConfigurationManager.ConnectionStrings["TestData"].ConnectionString);
    }
    protected void Application_End()
    {
        // Shut down SignalR Dependencies
        SqlDependency.Stop(ConfigurationManager.ConnectionStrings["TestData"].ConnectionString);
    }
}

SQL सर्वर स्थानीय मशीन पर है मैं विजुअल स्टूडियो (आईआईएस एक्सप्रेस) के माध्यम से कोड को चला रहा हूं।

  1. डेटाबेस पर सेवा ब्रोकर को सक्षम करने के लिए:

    अल्टर डाटाबेस सेट इएबलब्लॉकर जाओ

  2. क्वेरी अधिसूचना की सदस्यता के लिए, हमें आईआईएस सेवा खाते की अनुमति देना होगा

    GRANT SUBSCRIBE QUERY NOTIFICATIONS TO “<serviceAccount>”

मैंने अनुमान लगाया कि द्वितीय बिंदु की आवश्यकता नहीं है क्योंकि यह स्थानीय है। लेकिन मैंने इसे कुछ अनुमति देने की कोशिश की पता न हो कि क्या वे सही हैं क्योंकि मुझे नहीं लगता कि यह ऐप पूल का उपयोग कर रहा है। और स्थानीय इंजिन पर अनुमति की आवश्यकता नहीं है। अगर मैं स्वयं उपयोगकर्ता हूं और खुद को स्कीमा बनाया है

मैं जो प्रश्न देख रहा था वह एक था:

alter authorization on database::<dbName> to [sa];

मैंने उस अनुमति को भी दिया।

https://code.i-harness.com


मुझे याद आ रहा था: dependency.OnChange += new OnChangeEventHandler(OnChange); नया कोड ऐसा दिखेगा:

               SqlDependency dependency = new SqlDependency(command);

               dependency.OnChange += new OnChangeEventHandler(OnChange);

अब मैं void OnChange(object sender, SqlNotificationEventArgs e) कर सकता हूं