Мой MVC-проект выполняется в поддомене, скажем, json.mysite.com
, и мой контроллер выглядит примерно так:
/// assume this method is in some controller - MyJsonController.cs
public JsonResult GetStoreDetails(int storeId)
{
.....
return Json(MyStatisticsObject, JsonRequestBehavior.AllowGet);
}
Это прекрасно работает, только до тех пор, пока я загружаюлюбая страница из того же субдомена json.mysite.local
.Все, что мне нужно сделать, это
$.ajax({
url: "/MyJson/GetStoreDetails?storeId=18"
success: function (result) {
...
}
});
скажем, в firebug, и я вижу, что json прекрасно вернулся.
Теперь я возвращаюсь к своему основному проекту asp.net, который работает на разныхсубдомен (технически это совершенно разные проекты), я делаю это, чтобы захватить json из моего домена json
try
{
string jsonUrl = string.format("http://json.mysite.local/MyJson/GetStoreDetails?storeId={0}", SelectedStore.Id);
WebRequest requestObj = WebRequest.Create(jsonUrl);
requestObj.Method = "GET"; //this did not do anything
WebResponse responseObj = requestObj.GetResponse();
string json;
using (StreamReader objStreamReader = new StreamReader(responseObj.GetResponseStream()))
{
json = objStreamReader.ReadToEnd();
}
JavaScriptSerializer jss = new JavaScriptSerializer();
DataTransfer.MyStoreStats storeStats = jss.Deserialize<DataTransfer.MyStoreStats>(json); //this line ALWAYS throws exception
}
catch (Exception ex)
{
Log.Fatal("storeId: " + SelectedStore.Id, ex);
base.RaiseError(ErrorCode._500);
}
Я всегда получаю исключение.Если я проверяю строку json
, у меня всегда есть полный документ лотоса от <html>
до закрывающего тега, и у меня даже нет представления об этом контроллере.
Я пробовал несколько вещей, таких как изменение типа записи и т. Д., Но, похоже, ничего не работает.Что нужно сделать, если мне нужен только мой json, пожалуйста?
Большое спасибо.