WCF Отдых с Jquery Ajax и .Net Application консультация - PullRequest
1 голос
/ 21 сентября 2011

Мне нужна ваша помощь и консультация в связи с проблемой, с которой я столкнулся из-за неправильной архитектуры приложения.

Случай: я работаю в веб-приложении, построенном на asp.NET 4.0 для клиента, и почтисделали 85% из этого проекта, архитектура проекта выглядит следующим образом:

  • Front End Server: веб-приложение, Ajax JQuery Calling WCF Rest Service.
  • Сервер приложений: хостСлужба отдыха WCF и компоненты DAL.
  • SQL Server: размещайте базу данных самостоятельно

Я думаю, что моя проблема связана с проблемой CROSS-DOMAIN, и мой клиент гарантирует, что решениедолжен быть развернут на 3 серверах, так как вы знаете, что я уже застрял с решением, и мне нужно найти выход из моей проблемы.все 3 сервера размещены в одном домене, но с разными IP-адресами, я попытался использовать подход JSONP, но, похоже, у него есть некоторые ограничения и недостатки, такие как отсутствие обработки ошибок, что является одним из требований моего клиента (возможно ли сделать POST,Операции PUT с использованием JSONP?), Я также пытался поддерживать заголовки ответа сервера, но я думаю, что он не будет работать со всеми браузерами, такими как IE 9, Chrome.

Эта проблема действительно ставит меня в замешательствоСитуация, и мне нужна ваша профессиональная и консультационная помощь, некоторые люди предложили мне создать еще один отдых WCF, размещенный во внешнем интерфейсе, и он вызывает другую службу, но я думаю, что это сделает работу очень медленной.

Приветствия.

1 Ответ

0 голосов
/ 30 марта 2012

Я тоже боролся с этой проблемой и пока не нашел идеального ответа.Вот несколько вещей, которые по крайней мере помогут вам продвинуться дальше.

Один из вариантов - настроить поведение webHttp таким образом, чтобы оно не включало атрибут faultExceptionEnabled = "true".Таким образом, jQuery будет работать не с обработчиком ошибок, а с обработчиком успеха.WebFaultException по-прежнему должен заполнять параметр данных в обработчике успеха JSON.Недостатком этого подхода является то, что я не нашел способа обернуть исключение ошибки, поэтому я могу легко проверить, действительно ли произошла ошибка в этом обработчике успеха.Все, что я получаю в JSON, это свойства ошибки.

Следующий вариант - просто поместить веб-интерфейс в другой виртуальный каталог на том же веб-сайте, что и служба WCF.При таком подходе не должно быть междоменных проблем.Не всегда идеальное решение, но оно работает.

У меня также были проблемы локально, если я использую веб-сервер Cassini или IIS Express.Я думаю, что браузер интерпретирует запросы к веб-сайтам на разных портах как междоменный запрос.Единственный способ работать локально с любым успехом - это если я установил IIS на своем компьютере разработчика и разместил на веб-сайте по умолчанию и службу, и внешний интерфейс.

Если кто-то нашел лучший способ, пожалуйста,доля.Этого достаточно, чтобы отвлечь парня от помешательства.

...