C#MVC网站包装用于私人测试版测试

C#MVC网站包装用于私人测试版测试,c#,asp.net-mvc-4,asp.net-mvc-routing,beta,iis-handlers,C#,Asp.net Mvc 4,Asp.net Mvc Routing,Beta,Iis Handlers,我正在准备一个私人测试网站。该网站可以匿名使用,也可以允许用户登录(使用身份) 在私有测试期间,我需要对整个站点进行密码保护,以便只有拥有密码的用户才能访问主站点。一旦他们到达那里,他们可以选择“匿名”浏览该网站,或者他们可以注册一个实际的帐户并使用一个帐户进行浏览 我正在寻找这个问题的任何好的/便宜的解决方案,不管它是什么 第三方网站,可将我的整个网站包装在安全/私人设置中 一个简单的“网守”应用程序,它接收对网站的所有请求,并在用户经过身份验证后将其转发到整个网站 其他一些解决方案(可能使

我正在准备一个私人测试网站。该网站可以匿名使用,也可以允许用户登录(使用身份)

在私有测试期间,我需要对整个站点进行密码保护,以便只有拥有密码的用户才能访问主站点。一旦他们到达那里,他们可以选择“匿名”浏览该网站,或者他们可以注册一个实际的帐户并使用一个帐户进行浏览

我正在寻找这个问题的任何好的/便宜的解决方案,不管它是什么

  • 第三方网站,可将我的整个网站包装在安全/私人设置中
  • 一个简单的“网守”应用程序,它接收对网站的所有请求,并在用户经过身份验证后将其转发到整个网站
  • 其他一些解决方案(可能使用代理服务器,如nginx/HAproxy或其他一些)
解决方案必须是非侵入性的,以我目前的代码基础,这就是为什么我需要它来完全包装我的应用程序。一旦beta测试完成,我将能够删除包装(可能会重新发布一些DNS记录),并且该站点将继续工作,而无需验证步骤

到目前为止,我还没有能够找到一个合适的第三方网站使用


我尝试创建自己的包装器

我尝试创建一个非常简单的MVC应用程序,它采用一个通用的路径,并将其发送到一个简单的操作,该操作在从实际网站(一些内部url)请求正确的页面之前检查用户是否经过身份验证(私人beta用户)

这使我能够保持正确的URL作为面向用户的URL,而他们的请求只是转发到执行所有工作的应用程序

用户不知道请求是否被转发,因为他们只看到properURL.com/somepage

我也有这个问题,因为它只是部分工作。HTML是从内部站点检索的,但是对css和js文件的请求会失败,因为当包装器站点收到如下请求时

properURL.com/Content/css/style.css
包装器站点尝试在本地查找style.css文件,而不是捕获对静态文件的请求并将其视为操作(从内部站点请求)

我尝试了多种方法让IIS忽略此文件类型请求,并将请求发送给RouteConfig,以便在路由中被捕获,如下所示:

routes.MapRoute(
            "Content", 
            "Content/{*something}",
            new { controller = "Home", action = "Content" } defaults
        );
然而,这没有任何帮助

我还尝试向Web.config添加一个处理程序,但似乎也没有帮助

      <add name="CssFileHandler" path="Content*" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />


有什么想法吗?

您可以为此创建一个windows用户帐户,然后在IIS中设置具有站点权限的基本身份验证。然后用户就可以用它登录到该站点。这独立于站点的身份验证逻辑,因此他们可以匿名浏览或创建帐户并使用asp.net身份验证登录站点。此解决方案也不需要对应用程序代码进行任何修改


我确实尝试过这种方法(现在将再次尝试以确保),但当我在IIS中打开基本身份验证时,它似乎知道应用程序是.net,并试图通过网站的内部登录对用户进行身份验证。。。。它将他们带到mysite.com/Account/Login?ReturnUrl=%2fcount%2FLogin%3FReturnUrl%3。。。。。(无休止的循环)这不适用于这样一个事实,即登录仅针对我的身份用户。站点的大部分内容可供未登录用户使用(但已通过beta版验证)。基本身份验证与.net身份验证完全无关,它是在http级别而不是在应用程序级别完成的,因此您遇到的问题可能是由于另一个问题。您是否在希望匿名允许的控制器上设置了[AllowAnonymous]装饰器?我的方法上确实设置了[AllowAnonymous]。在我的IIS身份验证设置中,我只启用了基本身份验证。已禁用匿名身份验证(以及所有其他身份验证)。我尝试了3种不同的授权规则选项;所有用户、所有匿名用户和“Beta”用户windows帐户。这三个选项都会将我带到mysite.com/Account/Login?ReturnUrl=%2fcount%2FLogin%3FReturnUrl%3D%252FAccount%252FLogin%。。。。。。。重复前面的步骤听起来很奇怪,但请检查bin文件夹中是否有名为WebMatrix.Data.dll或WebMatrix.WebData.dll的文件,然后将其删除。这是个好主意,我的应用程序箱文件夹中没有WebMatrix文件。服务器上唯一的Webmatrix文件位于C:\Program files(x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblys目录中。我临时删除了这些DLL并重新启动了服务器。。。不幸的是,帐户/登录名存在相同的问题?returnUrl。。。。
      <add name="CssFileHandler" path="Content*" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />