Проблема маршрутизации ASP.NET MVC с клиентом Google Chrome - PullRequest
1 голос
/ 15 июня 2010

Приложение My Silverlight 4 размещено в веб-приложении ASP.NET MVC 2.Он отлично работает, когда я просматриваю Internet Explorer 8. Однако Google Chrome (версия 5) не может найти контроллеры ASP.NET.В частности, следующий контроллер ASP.NET работает как с Chrome, так и с IE.

//[OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")]
public ContentResult TestMe()
{
  ContentResult result = new ContentResult();
  XElement response = new XElement("SvrResponse", 
    new XElement("Data", "my data"));
  result.Content = response.ToString();
  return result;
}

Если я раскомментирую атрибут [OutputCache], он будет работать с IE, но не с Chrome.Кроме того, я использую привязку пользовательской модели с контроллерами, поэтому, если я напишу следующее:

public ContentResult TestMe(UserContext userContext)
{
  ...
}

, это также работает с IE, но опять же не с Chrome, который выдает мне сообщение об ошибке, в котором говорится, что ресурс не найден.Конечно, я настроил IIS 6 для обработки всех запросов через aspnet_isapi.dll и зарегистрировал привязку пользовательской модели в Global.asax моего веб-приложения в методе Application_Start ().Может кто-нибудь объяснить мне, в чем может быть причина?Спасибо.

Ответы [ 3 ]

1 голос
/ 15 июня 2012

Я обнаружил, что два метода WebRequest : Create и CreateHttp ведут себя по-разному при использовании HTTPS. Всегда используйте Create метод для создания правильного запроса в соответствии с протоколом. У меня была похожая ситуация и вот что у меня получилось. Для следующего кода у нас есть исключение Не найдено при попытке получить контент с помощью WebRequest :

HttpWebRequest request = WebRequest.CreateHttp(uri); 

Но хорошо работает следующий фрагмент:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
1 голос
/ 15 июня 2010

Это не дает прямого ответа на ваш вопрос, но я бы посоветовал вам попробовать Fiddler и посмотреть на фактический запрос, отправляемый браузером. Сравните различия и попытайтесь выяснить, что происходит не так (вы можете использовать вкладку «Построитель запросов» в Fiddler для eh-hm, fiddle с параметрами).

0 голосов
/ 15 июня 2010

Хорошо, я нашел способ решить эту проблему.В моем приложении Silverlight я выбрал использование стека клиента вместо использования стека http по умолчанию.

WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp);

Смотри также: http://blogs.msdn.com/b/silverlight_sdk/archive/2009/08/12/new-networking-stack-in-silverlight-3.aspx

...