|
WCF + jquery ajax без ИИС-а
|
|||
---|---|---|---|
#18+
Доброго времени суток! Возникла задачка сделать следующее: 1. Сделать WCF сервис и захостить его как вин сервис. 2. Заточить WCF под доcтуп из обычной html страницы через jquery ajax GET и получать какой-то текст. 3. Заточить WCF под передачу файлов через ПОСТ обычным intup type= file. Все должно работать без иис-а. Вобственно вопрос следующий: Большинство примеров по WCF + Jquery расчитано на то, что сервис хостится на иисе и вроде как все прекрасно работает, но у меня как раз нет ииса. Как настроить все эти Behavior-ы и EndPoint-ы чтоб можно было сделать GET запрос и что-то отправить через ПОСТ? Возможно подобная задачу у кого-то возникала? Заранее благодарен:) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2012, 14:24 |
|
WCF + jquery ajax без ИИС-а
|
|||
---|---|---|---|
#18+
Serg-InfДоброго времени суток! Возникла задачка сделать следующее: 1. Сделать WCF сервис и захостить его как вин сервис. 2. Заточить WCF под доcтуп из обычной html страницы через jquery ajax GET и получать какой-то текст. 3. Заточить WCF под передачу файлов через ПОСТ обычным intup type= file. Все должно работать без иис-а. Вобственно вопрос следующий: Большинство примеров по WCF + Jquery расчитано на то, что сервис хостится на иисе и вроде как все прекрасно работает, но у меня как раз нет ииса. Как настроить все эти Behavior-ы и EndPoint-ы чтоб можно было сделать GET запрос и что-то отправить через ПОСТ? Возможно подобная задачу у кого-то возникала? Заранее благодарен:) Специфики jquery я конечно не знаю, но может поможет: Размещение служб ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2012, 15:37 |
|
WCF + jquery ajax без ИИС-а
|
|||
---|---|---|---|
#18+
Захостить как вин сервия я сделал, вот как мне теперь получить человекопонятные данные - текст TateTime.Now.ToString() например который я определил [ServiceContract] public interface iDataService { [OperationContract] string ServerResponse(); } class Server :iDataService { public string ServerResponse() { return DateTime.Now.ToString(); } public void ServiceStart() { ServiceHost serviceHost = new ServiceHost(typeof(Server), new Uri(ServerSettings.ServerUrl)); serviceHost.AddServiceEndpoint(typeof(iDataService), new WebHttpBinding(), ""); serviceHost.Open(); } } через обычный GET запрос ajax? Возможно где-то туплю потому как до этого опыт с WCF был минимальный ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2012, 16:53 |
|
WCF + jquery ajax без ИИС-а
|
|||
---|---|---|---|
#18+
Serg-Inf, да, ты не то делаешь. тебе надо использовать атрибуты webmethod , а не operationcontract. и при этом исползовать http binding это и будет эмуляция web сервера , и сможешь, тогда post и get использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2012, 10:36 |
|
WCF + jquery ajax без ИИС-а
|
|||
---|---|---|---|
#18+
Так должно быть? [ServiceContract] public interface iDataService { [OperationContract] [WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)] string ServerResponse(); } и дальше serviceHost.AddServiceEndpoint(typeof(iDataService), new WebHttpBinding(), ""); ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2012, 12:51 |
|
WCF + jquery ajax без ИИС-а
|
|||
---|---|---|---|
#18+
Спасибище:) разобрался, одна часть заработала. Кстати вопрос возможна не совсем в тему, я решил посмотреть как ведет себя этот сервер под нагрузкой: создал 1000 юзеров = 1000 отдельных потоков и каждый раз в несколько секунд шлет запрос, первых 2-3 минуты сервак справляется нормально, потом в "генераторе реквестов" показывается эксепшн, что не может подконнектиться к сокету из-за того, что очередь переполнена. Как и где можно настроить количество подключений или куда вообще копать? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2012, 17:02 |
|
WCF + jquery ajax без ИИС-а
|
|||
---|---|---|---|
#18+
В процессе наткнулся на еще вот на что: При скачивании файла через браузер с WCF сервера (в респонсе передается byte[]) я получаю респонс - контент тайп, имя файла все нормально, но файлы в итоге "битые" и не открываются и имеют отличный размер от оригинала. [WebGet(UriTemplate = "GetFile/{id}")] byte [] GetFile(string id); и его реализация: public byte [] GetFile(string id) { var response = WebOperationContext.Current.OutgoingResponse; FileInfo fInfo = new FileInfo(ServerSettings.SaveFilePath + "blah-blah.zip"); long numBytes = fInfo.Length; FileStream fStream = new FileStream(ServerSettings.SaveFilePath + "blah-blah.zip", FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fStream); byte[] bOutput = br.ReadBytes((int)numBytes); br.Close(); fStream.Close(); response.Headers.Add(HttpResponseHeader.ContentType, "application/" + fInfo.Extension); response.Headers.Add("Content-Disposition", string.Format("attachment; filename={0}", fInfo.Name)); response.Headers.Add("X-Filename", fInfo.Name); response.ContentLength = bOutput.Length; return bOutput; } Где у меня косяк? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2012, 18:18 |
|
|
start [/forum/topic.php?fid=19&fpage=17&tid=1397299]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 142ms |
0 / 0 |