Comments (14)
Hashes were interpreted as a fragment instead of part of the path. Should be fixed now.
from nwebdav.
Now Far cannot see any files inside #directory
Used NWebDav.Sample.HttpListener v.0.1.22.0
Far v.3.0.4774, NetBox v.2.3.0.436
log.txt
from nwebdav.
I hope I have nailed the issue now. It seems to work with FAR and WinSCP now. I had to make some low-level changes, so please test the current master branch. I will create new NuGet packages if this seems to be stable.
Hashes are kind-of special in URL's, so it's nasty that they are used in filenames. But end-user will do it, so we should be able to support it :-)
from nwebdav.
Super-nice, thank you!
Yep, it's nasty, but so goes the world :)
Suppose to test it tomorrow/day after
from nwebdav.
file names
README - test.md
, README test.md
, README – test.md
seems ok in common cases, but when located in #-dir looks like README%20-%20test.md
, README%20%20%20test.md
, README%20%E2%80%93%20test.md
Checked in Far, Total Commander and CarotDAV
[3]: PROPFIND:http://127.0.0.1:11111/#2:127.0.0.1:11111 - Start processing
[3]: <?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:" xmlns:Z="urn:schemas-microsoft-com:">
<D:response>
<D:href>http://127.0.0.1:11111/%232</D:href>
<D:propstat>
<D:prop>
<D:creationdate>2017-02-01T20:02:25.992Z</D:creationdate>
<D:displayname>#2</D:displayname>
<D:getlastmodified>Wed, 08 Feb 2017 07:50:46 GMT</D:getlastmodified>
<D:resourcetype>
<D:collection />
</D:resourcetype>
<D:lockdiscovery />
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive />
</D:lockscope>
<D:locktype>
<D:write />
</D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope>
<D:shared />
</D:lockscope>
<D:locktype>
<D:write />
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:childcount>3</D:childcount>
<D:isfolder>1</D:isfolder>
<D:ishidden>0</D:ishidden>
<D:isstructureddocument>0</D:isstructureddocument>
<D:hassubs>0</D:hassubs>
<D:nosubs>0</D:nosubs>
<D:objectcount>3</D:objectcount>
<D:reserved>0</D:reserved>
<D:visiblecount>3</D:visiblecount>
<Z:Win32CreationTime>Wed, 01 Feb 2017 20:02:25 GMT</Z:Win32CreationTime>
<Z:Win32LastAccessTime>Wed, 08 Feb 2017 07:50:46 GMT</Z:Win32LastAccessTime>
<Z:Win32LastModifiedTime>Wed, 08 Feb 2017 07:50:46 GMT</Z:Win32LastModifiedTime>
<Z:Win32FileAttributes>00000010</Z:Win32FileAttributes>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response>
<D:href>http://127.0.0.1:11111/%232/README%2520%2520%2520test.md</D:href>
<D:propstat>
<D:prop>
<D:creationdate>2017-02-08T07:50:46.543Z</D:creationdate>
<D:displayname>README test.md</D:displayname>
<D:getcontentlength>2492</D:getcontentlength>
<D:getcontenttype>application/octet-stream</D:getcontenttype>
<D:getlastmodified>Wed, 08 Feb 2017 07:50:46 GMT</D:getlastmodified>
<D:resourcetype />
<D:lockdiscovery />
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive />
</D:lockscope>
<D:locktype>
<D:write />
</D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope>
<D:shared />
</D:lockscope>
<D:locktype>
<D:write />
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:ishidden>0</D:ishidden>
<Z:Win32CreationTime>Wed, 08 Feb 2017 07:50:46 GMT</Z:Win32CreationTime>
<Z:Win32LastAccessTime>Wed, 08 Feb 2017 07:50:46 GMT</Z:Win32LastAccessTime>
<Z:Win32LastModifiedTime>Wed, 08 Feb 2017 07:50:46 GMT</Z:Win32LastModifiedTime>
<Z:Win32FileAttributes>00000020</Z:Win32FileAttributes>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response>
<D:href>http://127.0.0.1:11111/%232/README%2520-%2520test.md</D:href>
<D:propstat>
<D:prop>
<D:creationdate>2017-02-08T07:50:33.463Z</D:creationdate>
<D:displayname>README - test.md</D:displayname>
<D:getcontentlength>2492</D:getcontentlength>
<D:getcontenttype>application/octet-stream</D:getcontenttype>
<D:getlastmodified>Wed, 08 Feb 2017 07:50:33 GMT</D:getlastmodified>
<D:resourcetype />
<D:lockdiscovery />
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive />
</D:lockscope>
<D:locktype>
<D:write />
</D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope>
<D:shared />
</D:lockscope>
<D:locktype>
<D:write />
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:ishidden>0</D:ishidden>
<Z:Win32CreationTime>Wed, 08 Feb 2017 07:50:33 GMT</Z:Win32CreationTime>
<Z:Win32LastAccessTime>Wed, 08 Feb 2017 07:50:33 GMT</Z:Win32LastAccessTime>
<Z:Win32LastModifiedTime>Wed, 08 Feb 2017 07:50:33 GMT</Z:Win32LastModifiedTime>
<Z:Win32FileAttributes>00000020</Z:Win32FileAttributes>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response>
<D:href>http://127.0.0.1:11111/%232/README%2520%25E2%2580%2593%2520test.md</D:href>
<D:propstat>
<D:prop>
<D:creationdate>2017-02-08T07:50:28.558Z</D:creationdate>
<D:displayname>README - test.md</D:displayname>
<D:getcontentlength>2492</D:getcontentlength>
<D:getcontenttype>application/octet-stream</D:getcontenttype>
<D:getlastmodified>Wed, 08 Feb 2017 07:50:28 GMT</D:getlastmodified>
<D:resourcetype />
<D:lockdiscovery />
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive />
</D:lockscope>
<D:locktype>
<D:write />
</D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope>
<D:shared />
</D:lockscope>
<D:locktype>
<D:write />
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:ishidden>0</D:ishidden>
<Z:Win32CreationTime>Wed, 08 Feb 2017 07:50:28 GMT</Z:Win32CreationTime>
<Z:Win32LastAccessTime>Wed, 08 Feb 2017 07:50:28 GMT</Z:Win32LastAccessTime>
<Z:Win32LastModifiedTime>Wed, 08 Feb 2017 07:50:28 GMT</Z:Win32LastModifiedTime>
<Z:Win32FileAttributes>00000020</Z:Win32FileAttributes>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
[6]: PROPFIND:http://127.0.0.1:11111/#2:127.0.0.1:11111 - Finished processing (117ms, HTTP result: 207)
from nwebdav.
I think I only need specific handling for hashes and let the XML encoder encode the rest. I have pushed another commit in this area (d02234f) that should fix it. Hashes are kind of special in this area. Sorry for the inconvenience. Hope you will keep reporting issues...
from nwebdav.
Now Far does not show folders with spaces and not eng symbols in names. For example, _WebDAV Test
, Camera Uploads
, пример
TotalCommander and CarotDAV seems ok.
Sorry for the inconvenience. Hope you will keep reporting issues...
No problem :)
from nwebdav.
STOP STOP STOP
Seems like my fault
from nwebdav.
[6]: PROPFIND:http://127.0.0.1:11111/#2/Camera Uploads:127.0.0.1:11111 - Start processing
[6]: <?xml version="1.0" encoding="utf-8"?>
<propfind xmlns="DAV:">
<allprop />
</propfind>
[6]: PROPFIND:http://127.0.0.1:11111/#2/Camera Uploads:127.0.0.1:11111 - Finished processing (0ms, HTTP result: 404)
from nwebdav.
Commit 697a073 seems to fix this issue, but I am not happy with this fix. It requires changes to the underlying store. That way the store needs to know how to deal with this "broken" URI scheme. That's not good design. It should be resolved at a higher level.
I am considering to rewrite the URI stuff and work with plain strings (or a custom URL class instead). That way we can isolate this awkward URI encoding stuff and don't bother stores with this functionality. Please comment...
from nwebdav.
Everything seems ok at this moment, thanks!
I think, custom URI class will solve this problem, cause it's a big difference to work with standart URI (such as .AbsolutePath translates +
, (space)+
, +(space)
and so on) and as-is webdav uri
from nwebdav.
Would you create nuget package 0.1.24?
from nwebdav.
Yes, it's already uploaded but not indexed yet: https://www.nuget.org/packages/NWebDav.Server.
from nwebdav.
Far does not see files with %, as usially, TC and CarotDAV ok.
200%.md
It seems the % sign needs to be replaced same way as #
:(
from nwebdav.
Related Issues (20)
- Is it possible for multiple users to edit the same file and save using this webdav library? HOT 5
- how send web api token (jwt) ? HOT 1
- DELETE issue HOT 5
- Content-Type header not set on Asp .Net.
- [WPS Office] Download fails HOT 3
- Word does not open .docx files
- Running HttpListener under mono does not recognise Basic Authentication HOT 1
- Problem with move request for non-existing source HOT 6
- [COPY] No error generated when destination file name is too long. HOT 4
- False upload progress percentage HOT 1
- need documents HOT 1
- Use DI instead of static HOT 3
- Upgrade .Net5 & Further Improvements HOT 4
- Async LockManager HOT 4
- https://datatracker.ietf.org/doc/html/rfc4918 instead of https://datatracker.ietf.org/doc/html/rfc2518 HOT 3
- Project vs nuget license, why there is difference HOT 3
- State of the project HOT 2
- Maximum size of attributes HOT 4
- Content methods need HttpContextAccessor. HOT 1
- Is this use of System.Xml.Linq.XDocument.Load() secure? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nwebdav.