2012-01-18 73 views
0

所以這段代碼在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(); 

我很想弄清楚爲什麼它說,對象不是組。

方法嘗試:

  1. 新的SOAP客戶端。
  2. 指定綁定和終點地址的新soap客戶端
  3. 使用渠道工廠創建並打開渠道。

如果需要更多信息,我可以給予更多。我沒有想法。

+0

NullReferenceException stacktrace的頂部是否指向您的代碼?確切地說哪個對象是空的? – 2012-01-18 09:51:08

+0

var client = new Service1SoapClient();是空的對象。對我來說,這是沒有意義的,因爲我使用不同形式的相同代碼行,並且工作正常。 – Brent 2012-01-22 10:54:32

+0

'客戶端'變量不能爲空(這將違反C#規範)。可能發生的情況是,GetDates中的一些代碼拋出NullReferenceException - 看到完整的堆棧跟蹤會有幫助。 – 2012-01-23 12:12:25

回答

0

它看起來像單聲道的錯誤。您應該使用可複製的測試用例file a bug,以便它可以修復(並可能找到可以使用的解決方法)。

0

不幸的是,我沒有Linux來測試,但我建議你把客戶的變量在使用()語句:

using(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); 
} 

我希望它能幫助。

RC。

+0

從Linux測試,仍然沒有骰子。 – Brent 2012-01-18 05:39:35

相關問題