本文介绍了NuGet.Server返回404错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经按照说明设置并托管了自己的NuGet feed.我正在 Windows 2012(IIS 8.5)框上运行Web应用程序.

I have followed the instructions to setup and host my own NuGet feed. I am running the web application on a Windows 2012 (IIS 8.5) box.

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

I build and run the solution and get the default.aspx page...

哪个说您正在运行NuGet.Server v2.8.60318.667"和单击此处查看您的包裹".

Which says "You are running NuGet.Server v2.8.60318.667"and "Click here to view your packages".

当我单击此处"链接时,出现"404-找不到文件或目录".错误.

When I click on the "here" link I get a "404 - File or directory not found." error.

  • 我可以成功运行nuget.exe push命令以将软件包放在Nuget服务器;但是尝试运行时出现404错误nugget.exe列表命令.
  • 我已重新启动IIS和服务器
  • 我已经从头开始重建了NuGet.Server Web应用程序.
  • 我尝试将NuGet.Server托管在Windows 7机器上,但没有成功.
  • Web.Config具有以下条目

  • I can successfully run a nuget.exe push command to put packages onthe Nuget server; however I get a 404 error when attempting to runnugget.exe list command.
  • I have restarted IIS and the server
  • I have rebuilt the NuGet.Server web application from scratch.
  • I have tried hosting the NuGet.Server on a Windows 7 box with nosuccess.
  • The Web.Config has the following entry

<modules runAllManagedModulesForAllRequests="true">

  • web.config中还有一个条目,用于将.nupkg扩展名注册为mimeType ="application/zip"

  • The web.config also has an entry to register the .nupkg extension as mimeType="application/zip"

    URL路由似乎不起作用,但是我似乎无法确定我做错了什么.某种原因阻止了odata提要的正常工作.

    It seems like the url routing is not working, but I can't seem to pin down what I am doing wrong. Something is preventing the odata feed from working.

    我知道NuGet服务器有很棒的第三方实现,但是我真的很想获得免费的工作,而且看起来应该很容易.任何想法或疑难解答提示将不胜感激.

    I know there are great 3rd party implementations of NuGet server, but I would really like to just get the free one working and it seems like it should be so easy. Any thoughts or troubleshooting tips would be appreciated.

    推荐答案

    此答案扩展了 AndrewD的答案

    像他一样,我从一个VB项目开始,最后和OP一起生活在同一个阵营中.但是,对我有用的是将这两个文件中的所有C#代码都转换为VB.

    Like him, I started out with a VB project and I ended up in the same camp as OP. What worked for me however was converting all C# code into VB, within these two files.

    1. Default.aspx
    2. NuGetODataConfig.cs(用一个新文件:NuGetODataConfig.vb替换了该文件)

    为了完整起见,我在下面包括这些文件的转换后内容.

    For the sake of completion, I'm including the post-converted contents of these files below.

    <%@ Page Language="VB" %>
    <%@ Import Namespace="NuGet.Server" %>
    <%@ Import Namespace="NuGet.Server.App_Start" %>
    <%@ Import Namespace="NuGet.Server.Infrastructure" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>NuGet Private Repository</title>
        <style>
            body { font-family: Calibri; }
        </style>
    </head>
    <body>
        <div>
            <h2>You are running NuGet.Server v<%= Gettype(NuGetODataConfig).Assembly.GetName().Version %></h2>
            <p>
                Click <a href="<%= VirtualPathUtility.ToAbsolute("~/nuget/Packages") %>">here</a> to view your packages.
            </p>
            <fieldset style="width:800px">
                <legend><strong>Repository URLs</strong></legend>
                In the package manager settings, add the following URL to the list of
                Package Sources:
                <blockquote>
                    <strong><%= Helpers.GetRepositoryUrl(Request.Url, Request.ApplicationPath) %></strong>
                </blockquote>
                <% if string.IsNullOrEmpty(ConfigurationManager.AppSettings("apiKey")) Then %>
                To enable pushing packages to this feed using the <a href="https://www.nuget.org/downloads">NuGet command line tool</a> (nuget.exe), set the <code>apiKey</code> appSetting in web.config.
                <% else  %>
                Use the command below to push packages to this feed using the <a href="https://www.nuget.org/downloads">NuGet command line tool</a> (nuget.exe).
                <blockquote>
                    <strong>nuget.exe push {package file} {apikey} -Source <%= Helpers.GetPushUrl(Request.Url, Request.ApplicationPath) %></strong>
                </blockquote>
                <% end if %>
            </fieldset>
    
            <% if Request.IsLocal Then  %>
            <fieldset style="width:800px">
                <legend><strong>Adding packages</strong></legend>
    
                To add packages to the feed put package files (.nupkg files) in the folder
                <code><% = PackageUtility.PackagePhysicalPath %></code><br/><br/>
    
                Click <a href="<%= VirtualPathUtility.ToAbsolute("~/nuget/clear-cache") %>">here</a> to clear the package cache.
            </fieldset>
            <% End If %>
        </div>
    </body>
    </html>
    

    NuGetODataConfig.vb

    Imports System.Net.Http
    Imports System.Web.Http
    Imports System.Web.Http.ExceptionHandling
    Imports System.Web.Http.Routing
    Imports NuGet.Server
    Imports NuGet.Server.Infrastructure
    Imports NuGet.Server.V2
    
    <Assembly: WebActivatorEx.PreApplicationStartMethod(GetType(MGINuGet.App_Start.NuGetODataConfig), "Start")>
    
    Namespace MGINuGet.App_Start
        Public Module NuGetODataConfig
            Public Sub Start()
                ServiceResolver.SetServiceResolver(New DefaultServiceResolver())
    
                Dim config As HttpConfiguration = GlobalConfiguration.Configuration
    
                NuGetV2WebApiEnabler.UseNuGetV2WebApiFeed(config, "NuGetDefault", "nuget", "PackagesOData")
    
                config.Services.Replace(GetType(IExceptionLogger), New TraceExceptionLogger())
    
                Trace.Listeners.Add(New TextWriterTraceListener(System.Web.Hosting.HostingEnvironment.MapPath("~/NuGet.Server.log")))
                Trace.AutoFlush = True
    
                config.Routes.MapHttpRoute(name:="NuGetDefault_ClearCache",
                                           routeTemplate:="nuget/clear-cache",
                                           defaults:=New With {Key .controller = "PackagesOData", Key .action = "ClearCache"},
                                           constraints:=New With {Key .httpMethod = New HttpMethodConstraint(HttpMethod.Get)})
            End Sub
        End Module
    End Namespace
    

    这篇关于NuGet.Server返回404错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

  • 08-14 16:41