目前,我有一個用C#編寫的windows服務,它等待SQL Server Service Broker中的消息,並在收到消息時調用傳遞詳細信息的webservice方法。如何在SQLCLR存儲過程中保存webservice引用實例?
我想用一個SQLCLR存儲過程來直接調用webservice,我發現它很簡單。然後我可以使用內部激活來調用它。
但是,它需要爲每種方法創建一個新的web服務實例,並且根據經驗我發現這需要一些時間。在Windows服務中,我使用惰性實例在靜態類中創建它,但我知道靜態字段不能用於在SQLCLR中存儲信息。
有沒有辦法堅持這個webservice的參考?
編輯:這是懶惰的instantation代碼引用單身,我想堅持:
static class WsSingleton
{
static MWs.MWS mWS = null;
public static MWs.MWS GetMWS()
{
if (mWS == null)
{
mWS = new MWs.MWS();
mWS.Credentials = new System.Net.NetworkCredential("user", "password", "domain");
}
return mWS;
}
}
對您有幫助嗎? http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/using-static-properties-in-sqlclr-udts.aspx – 2012-01-06 17:04:24
@AdamHouldsworth我在發佈之前看過那篇文章,它澄清了限制,但沒有解決。 – 2012-01-09 10:29:18
它給出的解決方案是使引用靜態只讀,這是初始化後不可寫,所以滿足SQL的問題。 – 2012-01-09 10:30:43