Я пытаюсь получить доступ и изменить свойства «createdate» и «lastmodified» файла, который я ранее загрузил на веб-адрес. Я получаю ответ «HTTP/1.1 424 Failed Dependency», который я интерпретирую как «запрос не выполнен из-за отказа предыдущего запроса» в соответствии с https://tools.ietf.org/html/rfc4918.WebDav PROPPATCH status status HTTP/1.1 424 Failed Dependency
Я потерял информацию о том, что предыдущий запрос не работает здесь, потому что, когда я запускаю код, я не получаю никаких ошибок. Вот код:
FileInfo^ myfI=gcnew FileInfo(myfilePath);
String^ mytime=myfI->LastWriteTimeUtc.ToFileTimeUtc().ToString();
String^ strBody = "<?xml version=\"1.0\"?>"
+ "<d:propertyupdate xmlns:d=\"DAV:\">"
+ "<d:set>"
+ "<d:prop>"
+ "<creationdate>" + myfI->CreationTimeUtc.ToFileTimeUtc().ToString() + "</creationdate>"
+ "</d:prop>"
+ "<d:prop>"
+ "<lastmodified>" + mytime + "</lastmodified>"
+ "</d:prop>"
+ "</d:set>"
+ "</d:propertyupdate>";
array<Byte>^ mybytes= Encoding::UTF8->GetBytes(strBody);
String^ responseresult="";
String^ filename= myfI->Name;
System::Net::HttpWebRequest^ httpPutRequest = (System::Net::HttpWebRequest^)System::Net::WebRequest::Create(this->myURL + destinationpath+ "/" + filename);
httpPutRequest->Credentials = gcnew NetworkCredential(this->myUserName, this->myPassword);
httpPutRequest->PreAuthenticate = true;
httpPutRequest->Method = L"PROPPATCH";
httpPutRequest->ContentType = "text/xml";
httpPutRequest->ContentLength = mybytes->Length;
Stream^ requestStream = httpPutRequest->GetRequestStream();
requestStream->Write(mybytes,0,mybytes->Length);
requestStream->Close();
HttpWebResponse^ httpPutResponse = (HttpWebResponse^)httpPutRequest->GetResponse();
responseresult=httpPutResponse->StatusDescription;
HttpStatusCode mycode=httpPutResponse->StatusCode;
Stream^ myresponse=httpPutResponse->GetResponseStream();
StreamReader^ myr=gcnew StreamReader(myresponse);
String^ res=myr->ReadToEnd();
Я попытался только один собственности, а также и имеют один и тот же ответ.
Посоветуйте, пожалуйста?
Я предполагаю, что сервер не разрешает изменение, поскольку я попытался использовать только одно свойство за раз. Итак, как файл может быть загружен без изменения его сигнатур даты? (довольно и важно для многих целей) или, по его недостатку, как разрешить эти свойства быть изменены в IIS? – Aznarepse
Серверы WebDAV обычно не позволяют этого. Если IIS позволяет, это нестандартно. – Evert
Как временное решение (пока не выясню другое) Я отправляю файл параллельного файла в webdav с информацией о времени, и служба на сервере просматривает новые файлы и повторно устанавливает исходные данные. Поскольку оригинальное приложение просматривает время по прибытии, я должен использовать временный каталог, а затем переместить их в конечный пункт назначения, как только время будет правильным. Немного сложный, но на данный момент выполняет эту работу. Я все равно хочу просто отправить файл с нужными моментами, потому что я не могу установить службу на любом сервере ... – Aznarepse