На сервере я запускаю веб-API ASP.NET Core. Этот API используется приложением и веб-интерфейсом для предоставления необходимой информации. Одной из данных является контактная информация.
Теперь я хочу синхронизировать свою контактную информацию с адресной книгой смартфона без дополнительного приложения. Для этого я выбираю WebDAV.
Проблема в том, что у меня возникают проблемы с расширением веб-API ASP.NET Core с помощью WebDAV из-за пользовательского атрибута HttpAttribute, такого как PROPFIND. Кто-нибудь знает, как добавить WebDAV?
Это мой контроллер:
using Microsoft.AspNetCore.Mvc;
namespace Playground.Controllers
{
[Route("api/webdav")]
[ApiController]
public class WebDAVController : ControllerBase
{
private readonly string _baseDirectory = Path.Combine(Directory.GetCurrentDirectory(), "WebDAVData");
public WebDAVController()
{
// Ensure base directory exists
if (!Directory.Exists(_baseDirectory))
{
Directory.CreateDirectory(_baseDirectory);
}
}
// PROPFIND - Retrieve properties (a simple version)
[AcceptVerbs("PROPFIND")]
public IActionResult Propfind([FromQuery] string path)
{
var fullPath = Path.Combine(_baseDirectory, path ?? "");
if (!System.IO.File.Exists(fullPath) && !Directory.Exists(fullPath))
{
return NotFound();
}
// Return file or folder properties (you can extend this to include more detailed properties)
var fileInfo = new FileInfo(fullPath);
var properties = new Dictionary
{
{ "CreationDate", fileInfo.CreationTime.ToString() },
{ "LastModified", fileInfo.LastWriteTime.ToString() },
{ "Size", fileInfo.Length.ToString() }
};
return Ok(properties);
}
}
}
Изменить (06.01.2025):
Моя текущая проблема заключается в том, что я могу запустить проект, но не могу позвонить в PROFIND:
curl -X PROPFIND http://localhost:5242/api/webdav/yourfile.txt -i
HTTP/1.1 404 Not Found
Content-Length: 0
Date: Mon, 06 Jan 2025 08:22:47 GMT
Server: Kestrel
Другие вызовы API работают нормально:
curl -X GET http://localhost:5242/WeatherForecast/G ... erForecast
[{"date":"2025-01-07","temperatureC":-5,"summary":"Freezing","temperatureF":24},{"date":"2025-01-08","temperatureC":35,"summary":"Chilly","temperatureF":94},{"date":"2025-01-09","temperatureC":49,"summary":"Bracing","temperatureF":120},{"date":"2025-01-10","temperatureC":41,"summary":"Bracing","temperatureF":105},{"date":"2025-01-11","temperatureC":50,"summary":"Balmy","temperatureF":121}]
Вот журнал (для этого сообщения я вручную заменил корневой путь к содержимому на ***)
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5242
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: ***
fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
An unhandled exception has occurred while executing the request.
Swashbuckle.AspNetCore.SwaggerGen.SwaggerGeneratorException: The "PROPFIND" HTTP method is not supported.
at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GenerateOperations(IEnumerable`1 apiDescriptions, SchemaRepository schemaRepository)
at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GeneratePaths(IEnumerable`1 apiDescriptions, SchemaRepository schemaRepository)
at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GetSwaggerDocumentWithoutFilters(String documentName, String host, String basePath)
at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GetSwaggerAsync(String documentName, String host, String basePath)
at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext context)
Подробнее здесь: https://stackoverflow.com/questions/793 ... re-web-api
Попытка добавить поддержку WebDAV в веб-API ASP.NET Core. ⇐ C#
Место общения программистов C#
-
Anonymous
1736152173
Anonymous
На сервере я запускаю веб-API ASP.NET Core. Этот API используется приложением и веб-интерфейсом для предоставления необходимой информации. Одной из данных является контактная информация.
Теперь я хочу синхронизировать свою контактную информацию с адресной книгой смартфона без дополнительного приложения. Для этого я выбираю WebDAV.
Проблема в том, что у меня возникают проблемы с расширением веб-API ASP.NET Core с помощью WebDAV из-за пользовательского атрибута HttpAttribute, такого как PROPFIND. Кто-нибудь знает, как добавить WebDAV?
Это мой контроллер:
using Microsoft.AspNetCore.Mvc;
namespace Playground.Controllers
{
[Route("api/webdav")]
[ApiController]
public class WebDAVController : ControllerBase
{
private readonly string _baseDirectory = Path.Combine(Directory.GetCurrentDirectory(), "WebDAVData");
public WebDAVController()
{
// Ensure base directory exists
if (!Directory.Exists(_baseDirectory))
{
Directory.CreateDirectory(_baseDirectory);
}
}
// PROPFIND - Retrieve properties (a simple version)
[AcceptVerbs("PROPFIND")]
public IActionResult Propfind([FromQuery] string path)
{
var fullPath = Path.Combine(_baseDirectory, path ?? "");
if (!System.IO.File.Exists(fullPath) && !Directory.Exists(fullPath))
{
return NotFound();
}
// Return file or folder properties (you can extend this to include more detailed properties)
var fileInfo = new FileInfo(fullPath);
var properties = new Dictionary
{
{ "CreationDate", fileInfo.CreationTime.ToString() },
{ "LastModified", fileInfo.LastWriteTime.ToString() },
{ "Size", fileInfo.Length.ToString() }
};
return Ok(properties);
}
}
}
Изменить (06.01.2025):
Моя текущая проблема заключается в том, что я могу запустить проект, но не могу позвонить в PROFIND:
curl -X PROPFIND http://localhost:5242/api/webdav/yourfile.txt -i
HTTP/1.1 404 Not Found
Content-Length: 0
Date: Mon, 06 Jan 2025 08:22:47 GMT
Server: Kestrel
Другие вызовы API работают нормально:
curl -X GET http://localhost:5242/WeatherForecast/GetWeatherForecast
[{"date":"2025-01-07","temperatureC":-5,"summary":"Freezing","temperatureF":24},{"date":"2025-01-08","temperatureC":35,"summary":"Chilly","temperatureF":94},{"date":"2025-01-09","temperatureC":49,"summary":"Bracing","temperatureF":120},{"date":"2025-01-10","temperatureC":41,"summary":"Bracing","temperatureF":105},{"date":"2025-01-11","temperatureC":50,"summary":"Balmy","temperatureF":121}]
Вот журнал (для этого сообщения я вручную заменил корневой путь к содержимому на ***)
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5242
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: ***
fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
An unhandled exception has occurred while executing the request.
Swashbuckle.AspNetCore.SwaggerGen.SwaggerGeneratorException: The "PROPFIND" HTTP method is not supported.
at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GenerateOperations(IEnumerable`1 apiDescriptions, SchemaRepository schemaRepository)
at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GeneratePaths(IEnumerable`1 apiDescriptions, SchemaRepository schemaRepository)
at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GetSwaggerDocumentWithoutFilters(String documentName, String host, String basePath)
at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GetSwaggerAsync(String documentName, String host, String basePath)
at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext context)
Подробнее здесь: [url]https://stackoverflow.com/questions/79330990/trying-to-add-webdav-support-to-asp-net-core-web-api[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия