2011-08-01 60 views
4

我创建了一个MCV 3应用并将其部署到我组织中的开发服务器。它在我的开发机器中工作正常。但是,我注意到在开发服务器中,即使我已正确登录,应用程序也会将我重定向到Account/LogOn?ReturnUrl =%2f网页。我也看到有时候某些资产(CSS,Javascript,图片)也没有提供。我的应用让我重定向到帐户/登录?ReturnUrl =%2f

显示的错误消息如下。刷新页面后,应用程序工作得很好。如果我稍后不访问应用程序,则错误会再次出现。 任何想法?

'/'应用程序中的服务器错误。

无法找到该资源。

描述:HTTP 404.您正在查找的资源(或其中一个 依赖项)可能已被删除,名称已更改,或者 暂时不可用。请检查以下URL并确定 拼写正确。

请求的URL:/帐号/ LogOn支持

回答

2

解决方法是在IIS中禁用表单身份验证。

+4

这不是一个解决方案,它是一个解决方法,但不能使用表单身份验证(不是巨大的损失,但仍然hackish)的代价。有关实际解决方案,请参阅http://stackoverflow.com/a/6304624/120990 – defines

+0

谢谢达斯汀。不过,由于我使用AD进行身份验证,所以第一种解决方案适用于我。我在一个企业环境中,所有认证都由AD控制。 – Omar

+2

它适合你,但它不是一个正确的“解决方案”的原始问题。由于我不得不四处寻找答案,我只是认为其他人可能从链接中受益:)干杯! – defines

3

这是相当普遍的。对于资源样式表等,通常是不使用@ Content.Url的结果。我的猜测是,对于其他问题,您可能会硬编码您的链接,而不是使用@ Url.Action。这很常见,我已经遇到过很多次了。

真的基本上在开发环境中,你并不是真正关心虚拟目录 - 但是在生产环境中它更像是一个问题。

我会认为/帐户/登录指向使用IIS IIS时的根目录,您要通过虚拟目录指向此路由。如果链接是通过类似<%= Html.ActionLink%>生成的,那么你很好。但是,如果您有一些JavaScript,并且您正在调用一个URL,或者如果您将链接硬编码到/ MyController/MyList,那么它将无法找到它。

与css文件相同。如果你看一下如何创建一个新项目时的site.css文件被访问,那么你会看到这样的内容:

<链接的href =” <%= Url.Content(“〜/ Content.Site .css“)%>' etc ..等。

让我知道这是否有道理。

+0

我第一次访问该页面怎么样?当我在浏览器中输入主页网址时。它要求我提供我的凭据,然后将我重定向到错误页面 – Omar

+0

,这似乎是某种IIS配置。不是吗? –

+0

这就是我的想法。不知道在哪里看 – Omar

1

就像ek_ny说的,这是非常普遍的问题。您应该在全球范围内为您的应用程序创建这两个变量。

在后面端的代码,把这个可以被所有页面访问的类:

Public String SiteRootPath = (New Control).ResolveUrl("~/"); 

在前端,放在母版页文件:

var jvSiteRootPath="<%=SiteRootPath %>"; 

现在,您可以将其用于需要从根路径引用的所有网址。

2

您可能会看到这一点,因为你的web.config文件有错误的允许角色=“RoleNameHere”

如果您设置webconfig页这样下面的角色,确保角色匹配你设置登录角色为。例如,您可能写了Administrators而不是正确的Administrator。一旦你正确地写入作用下,RETURNURL消失,你可以在登录后再次访问该页面。

<location path="AdminDepartments.aspx"> 
    <system.web> 
     <authorization> 
     <allow roles="Administrator"/> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
</location> 
0

我想你应该让您的网站的Anonymous AuthenticationForms Authentication一起。

IIS上选择您的应用程序,然后在功能视图中选择验证。

相关问题