Nuget 服务器返回404错误

Nuget 服务器返回404错误,nuget,nuget-server,Nuget,Nuget Server,我已经按照设置和主持我自己的NuGet提要。我正在Windows 2012(IIS 8.5)上运行web应用程序 我构建并运行解决方案并获得default.aspx页面 上面写着“您正在运行NuGet.Server v2.8.60318.667” 和“单击此处查看您的软件包” 当我点击“here”链接时,我得到一个“404-未找到文件或目录”错误 我可以成功运行nuget.exe push命令来放置软件包 Nuget服务器;但是,我在尝试运行时遇到404错误 nugget.exe列表命令 我已

我已经按照设置和主持我自己的NuGet提要。我正在Windows 2012(IIS 8.5)上运行web应用程序

我构建并运行解决方案并获得default.aspx页面

上面写着“您正在运行NuGet.Server v2.8.60318.667” 和“单击此处查看您的软件包”

当我点击“here”链接时,我得到一个“404-未找到文件或目录”错误

  • 我可以成功运行nuget.exe push命令来放置软件包 Nuget服务器;但是,我在尝试运行时遇到404错误 nugget.exe列表命令
  • 我已重新启动IIS和服务器
  • 我从头开始重新构建了NuGet.Server web应用程序
  • 我尝试过在Windows7上托管NuGet.Server,但没有 成功
  • Web.Config包含以下条目

    <modules runAllManagedModulesForAllRequests="true">
    
    
    
  • web.config还有一个条目可以将.nupkg扩展名注册为mimeType=“application/zip”

似乎url路由不起作用,但我似乎无法确定我做错了什么。odata提要无法正常工作


我知道NuGet server有很多很棒的第三方实现,但我真的很想让免费的一个运行起来,看起来应该很简单。如果您有任何想法或疑难解答建议,我们将不胜感激。

我有一个答案,我在找到的任何一篇帖子中都没有提到。如果您将项目命名为Nuget.Server,即使发布将在IIS中工作,ninject也将无法设置包列表路由,因为它将尝试加载错误的DLL并出错

以下是一些其他可能的答案:


我今天遇到了这个问题。实际上,我需要在Global.asax中这样做:

void Application_Start(object sender, EventArgs e) 
{
    NuGetRoutes.Start();
}

如果将项目命名为Nuget.Server,由于生成的dll将是Nuget.Server.dll,因此将无法工作,因为Nuget.Server.dll是服务器的实际dll。
将程序集名称重命名为其他名称。

在%APPDATA%\NuGet或$(SolutionDir)中的NuGet.config文件。NuGet可能引用了意外的“活动源”URL。例如,TFS构建代理安装带来的nuget.exe可能仅在URL引用v3协议时才知道nuget v2协议。或者NuGet.config中可能缺少自定义NuGet服务器URL。

我遇到了类似的问题,我找到了解决方案!我按照创建空ASP.NET项目(我在VS2015上)的说明创建了一个私有nuget服务器,然后安装nuget.server(当前为v2.11.3.0)。我可以运行和查看网页,但我不能使用“nuget.exe push”上传软件包。我得到了可怕的404找不到的错误

我最终从github上克隆了nuget.server源代码,并直接运行了它,效果很好!?我发现我的
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文件


顺便说一句:
nuget.server
安装应该取代您的
web.config
。这可能对我不起作用。

我注意到,当您尝试上载相当大的nuget软件包时,会出现404错误。我增加了
maxAllowedContentLength
,这很有帮助

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="31457280"/>
    </requestFiltering>
  </security>
</system.webServer>

如果您创建一个新的空VB项目,您还将获得一个404(在包中并使用NuGet Manager浏览)

您似乎必须将项目创建为C,并且它可以按照广告的方式工作


但是源代码看起来是一样的:(

我在一个干净的
Visual Studio 2017
Web项目中遇到了这个问题


Visual Studio 2015
重新创建,并针对.NET 4.6.1进行分类

FWIW,我犯了尝试从中获取包的错误,并得到了相同的错误。从源URL末尾删除/packages就是答案,正确的URL也是答案。

此答案扩展了留下的注释


和他一样,我从一个VB项目开始,最后和OP在同一个阵营。然而,对我有效的是将这两个文件中的所有C#代码转换成VB

  • Default.aspx
  • NuGetODataConfig.cs(将此文件替换为新文件:NuGetODataConfig.vb)
  • 为了完整起见,我将这些文件的后期转换内容包括在下面


    Default.aspx
    
    NuGet私有存储库
    正文{font-family:Calibri;}
    您正在运行NuGet.Server v
    
    单击以查看您的软件包。
    

    存储库URL 在包管理器设置中,将以下URL添加到 资料来源: 要启用使用(nuget.exe)将包推送到此提要,请在web.config中设置
    apiKey
    appSetting。 使用下面的命令,使用(nuget.exe)将包推送到此提要。 nuget.exe推送{package file}{apikey}-Source 添加软件包 要将包添加到提要,请将包文件(.nupkg文件)放入文件夹中


    单击以清除包缓存。
    NuGetODataConfig.vb
    Imports System.Net.Http
    导入System.Web.Http
    导入System.Web.Http.ExceptionHandling
    导入System.Web.Http.Routing
    导入NuGet.Server
    导入NuGet.Server.Infrastructure
    导入NuGet.Server.V2
    名称空间MGINuGet.App\u开始
    公共模块NuGetODataConfig
    公共子启动()
    ServiceResolver.SetServiceResolver(新的DefaultServiceResolver())
    Dim配置为HttpConfiguration=Gl