所以這段代碼在Linux上的asp.net應用中運行。該代碼調用我的一項服務。 (WCF目前不能用於單聲道,這就是爲什麼我使用asmx)。從Windows運行時(調試時),此代碼可以工作。只要我部署到Linux,它就停止工作。我很困惑。我已經徹底測試了服務,並且服務很好。asp.net應用程序調用服務說它沒有初始化?
這裏是產生誤差的代碼:(NewVisitor是服用3串中的空隙功能)
//This does not work.
try
{
var client = new Service1SoapClient();
var results = client.NewVisitor(Request.UserHostAddress, Request.UrlReferrer == null ? String.Empty : Request.UrlReferrer.ToString(), Request.UserAgent);
Logger.Debug("Result of client: " + results);
}
這裏生成錯誤:對象引用不設置爲一個對象的一個實例
這裏是一個完美的作品代碼:
//This works (from the service)
[WebMethod(CacheDuration = _cacheTime, Description = "Returns a List of Dates", MessageName = "GetDates")]
public List<MySqlDateTime> GetDates()
{
return db.GetDates();
}
//Here is the code for the method above
var client = new Service1Soap12Client();
var dbDates = client.GetDates();
我很想弄清楚爲什麼它說,對象不是組。
方法嘗試:
- 新的SOAP客戶端。
- 指定綁定和終點地址的新soap客戶端
- 使用渠道工廠創建並打開渠道。
如果需要更多信息,我可以給予更多。我沒有想法。
NullReferenceException stacktrace的頂部是否指向您的代碼?確切地說哪個對象是空的? – 2012-01-18 09:51:08
var client = new Service1SoapClient();是空的對象。對我來說,這是沒有意義的,因爲我使用不同形式的相同代碼行,並且工作正常。 – Brent 2012-01-22 10:54:32
'客戶端'變量不能爲空(這將違反C#規範)。可能發生的情況是,GetDates中的一些代碼拋出NullReferenceException - 看到完整的堆棧跟蹤會有幫助。 – 2012-01-23 12:12:25