失敗,此代碼在控制檯應用程序而不是MVC:的StreamReader在MVC
XmlSerializer s = new XmlSerializer(typeof(IDChckRspn));
StreamReader r = new StreamReader(@"d:\temp\response.xml");
object obj = s.Deserialize(r);
IDChckRspn _response = (IDChckRspn)obj;
在控制檯應用程序的調試,我可以深入到S,R,OBJ和_response。在MVC應用程序中,如果我試圖鑽入它們,它們將無法打開。有時它會在MVC中工作,但大部分時間不會。我懷疑它與加載文件有關,因爲如果我在對象obj上放置斷點,我仍然無法在MVC應用程序中鑽入r,但可以在控制檯應用程序中進行操作。在MVC應用程序中使用FileStream有類似的問題。
更新1 蘇萊曼的,現在我使用此代碼丹尼爾斯建議後:
IDChckRspn response;
using (var r = new StreamReader(HttpContext.Server.MapPath("~/App_Data/response.xml")))
{
response = new XmlSerializer(typeof(IDChckRspn)).Deserialize(r) as IDChckRspn; //'as' rather than a cast won't throw an exception
}
,但仍然得到同樣的結果,也不例外,不能鑽到本地窗口看響應。此代碼後的下一行是斷點。
更新2 我宣佈在包含此代碼var test = "";
操作的變量。在那裏,我有問題(返回視圖中斷點;)。如果我評論清楚問題的聲明。如果我將斷點移動到response =行,並且即使在那裏使用變量聲明,它也可以工作。
public ActionResult VerifyID()
{
IDChckRspn response;
using (var r = new StreamReader(HttpContext.Server.MapPath("~/App_Data/response.xml")))
{
response = new XmlSerializer(typeof(IDChckRspn)).Deserialize(r) as IDChckRspn; //'as' rather than a cast won't throw an exception
}
var test = "";
return View();
}
爲什麼在動作中聲明變量會導致.Deserializer失敗?
任何錯誤信息?它是否會拋出任何異常?作爲MVC,我懷疑那個文件沒有INETUSR的權限。 – Gobo
您是否附加到w3wp進程或從調試器啓動站點? –
您應該發佈更多信息,例如異常! – Fals