Ответ 1
Если вы называете проект Nuget.Server, поскольку ваша сгенерированная dll будет Nuget.Server.dll, это не сработает, потому что Nuget.Server.dll является фактической dll для сервера. Переименуйте название своей сборки в другое.
Я выполнил инструкции , чтобы настроить и разместить мой собственный канал NuGet. Я запускаю веб-приложение в окне Windows 2012 (IIS 8.5).
Я создаю и запускаю решение и получаю страницу default.aspx...
Что говорит: "Вы используете NuGet.Server v2.8.60318.667" и "Нажмите здесь, чтобы просмотреть ваши пакеты".
Когда я нажимаю на ссылку "здесь", я получаю "404 - файл или каталог не найден". ошибка.
Web.Config имеет следующую запись
<modules runAllManagedModulesForAllRequests="true">
У web.config также есть запись для регистрации расширения .nupkg как mimeType = "application/zip"
Кажется, что маршрутизация URL не работает, но я не могу сказать, что я делаю неправильно. Что-то мешает работе одата.
Я знаю, что есть большие сторонние реализации NuGet-сервера, но я бы очень хотел просто получить бесплатную работу, и кажется, что это должно быть так просто. Любые мысли или советы по устранению неполадок будут оценены.
Если вы называете проект Nuget.Server, поскольку ваша сгенерированная dll будет Nuget.Server.dll, это не сработает, потому что Nuget.Server.dll является фактической dll для сервера. Переименуйте название своей сборки в другое.
Если вы создаете новый пустой проект VB, вы также получите 404 (в пакетах и в браузере с помощью NuGet Manager).
Кажется, вам нужно создать проект как С#, и он работает как рекламируемый!
И все же исходный код выглядит идентичным: (
У меня есть один ответ, который не упоминается ни в одном из сообщений, которые я нашел. Если вы назовете проект Nuget.Server, хотя публикация будет работать в IIS, ninject не сможет настроить маршрут списка пакетов, потому что он попытается загрузить неправильную DLL и ошибку.
Вот несколько других возможных ответов:
Файл NuGet.config в% APPDATA%\NuGet или $(SolutionDir).nuget может ссылаться на неожиданные URL-адреса активного источника. Например, nuget.exe, созданный установкой агента сборки TFS, может знать протокол NuGet v2 только в том случае, если URL-адреса относятся к протоколу v3. Или пользовательский URL-адрес сервера NuGet может отсутствовать в NuGet.config.
У меня была аналогичная проблема, и я нашел решение! Я создал частный сервер nuget, следуя инструкциям по созданию пустого проекта ASP.NET(я на VS2015), а затем установил nuget.server(в настоящее время v2.11.3.0). Мне удалось запустить веб-страницу, но я не смог использовать "nuget.exe push" для загрузки пакетов. Я получил ужасную ошибку 404, не найденную.
В конце концов я клонировал исходный код nuget.server с github и запускал это прямо, что отлично работало!? Я обнаружил, что мой web.config
был неправильным. Для меня ключевая строка была
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,PUT,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
в
<system.webServer>/<handlers>
раздела.
Я предлагаю всем, кто имеет проблемы, обращаться к github и сравнивать файлы web.config.
BTW: установка nuget.server
должна заменить ваш web.config
. Возможно, это не сработало правильно.
У меня была эта проблема сегодня. На самом деле мне нужно сделать это в Global.asax:
void Application_Start(object sender, EventArgs e)
{
NuGetRoutes.Start();
}
Я заметил, что вы получаете ошибку 404 при попытке загрузить довольно большие пакеты nuget. Я поднял maxAllowedContentLength
, и это помогло.
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="31457280"/>
</requestFiltering>
</security>
</system.webServer>
У меня была эта проблема с чистым веб-проектом Visual Studio 2017
.
Воссоздание с Visual Studio 2015
и таргетинг на .NET 4.6.1 отсортированы