Если где-то в коде первое пришедшие на ум решение по способу использования F# окажется не очень-то оптимальным, можно обсудить/улучшить (не боги горшки обжигали... :-) )...

Мне показалось или исходники F# это построчная калька с C#?

1
2
3
4
5
6
let leftChars: char[] = url.ToCharArray(0, 2)
                    

if (leftChars.[0] = '/' && leftChars.[1] = '/') then

    .....
1
2
3
4
if url.[0..1] = "//"' then


    .....

Впрочем вся функция жутковатая [:)]

PS: Вообще много скобок и мутаблов

By on 9/16/2011 8:00 AM ()

Ну вот, не успел выложить, как обнаружил проблемку... Дело в том, что адрес у MS может быть без указания схемы :-(. Например:

"//js.microsoft.com/library/svy/sto/broker.js"
или
/Areas/Global/Content/CodeSnippet.js

Если правильно понимаю, различаются эти два разных случая по наличию/отсутствию "//" в начале адреса. Если это так, то можно исправить ситуацию как-нибудь так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
let DownloadUrlToFile(purl: string, url: string, file: string) =
    let uri = if (not <| Regex.Match(url, CommonDefs.RegExprHttp).Success) then 
                    let puri = new Uri(purl)
                    let leftChars: char[] = url.ToCharArray(0, 2)
                    if (leftChars.[0] = '/' && leftChars.[1] = '/') then  
                        puri.Scheme + ":" + url
                    else     
                        puri.Scheme + "://" + puri.Host + url
              else url
    let req: HttpWebRequest = WebRequest.Create(new Uri(uri)) :?> HttpWebRequest
    req.UseDefaultCredentials <- true
    req.KeepAlive <- false
    use stream = req.GetResponse().GetResponseStream()
    use fileStream = File.OpenWrite(file)
    let mutable buff: byte[] = Array.zeroCreate(CommonDefs.BuffSize)
    let mutable lenRead = stream.Read(buff, 0, CommonDefs.BuffSize)
    while (lenRead > 0) do 
        fileStream.Write(buff, 0, lenRead)
        lenRead <- stream.Read(buff, 0, CommonDefs.BuffSize)

выше код для исправления в файле WebTools.fs...

P.S. Да уж... с отступами прямо беда :-( Ещё большая беда в символом "<" в коде... :-( пришлось его заменить на "<"... :-(

By on 9/16/2011 4:00 AM ()
IntelliFactory Offices Copyright (c) 2011-2012 IntelliFactory. All rights reserved.
Home | Products | Consulting | Trainings | Blogs | Jobs | Contact Us | Terms of Use | Privacy Policy | Cookie Policy
Built with WebSharper