(我是.Net和微软世界的新手,背景是Java和Tomcat,所以请记住这一点。)
我正在开发我的第一个.Net应用程序,使用Visual 2013、C#、.Net 4.5、MVC 5和EF 6。它是一个相当简单的基于web的应用程序,使用Windows身份验证和Active组进行授权,以便对Server数据库中的表执行相当基本的CRUD操作。
我还没有部署应用程序。我仍然在开发它并在我的电脑上测试它(运行Windows 7)。当我点击Ctrl-F5在Internet或Google中测试应用程序时,一切都很好。
但是,如果我告诉Visual在Firefox中访问它,它会显示页面,而不需要任何CSS或JavaScript。我可以单击应用程序中的链接并导航到各个页面,这些页面都可以正常工作。它们只是在没有任何CSS或工作JavaScript的情况下显示。当我手动尝试查看一个CSS或JavaScript文件时,我会得到一个内部服务器错误(HTTP 500)。检查日志文件会显示页面试图加载的每个CSS和JavaScript文件的状态代码500。
我很困惑,因为它在I和Chrome上运行得很好。如何使用不同的web浏览器导致此内部服务器错误?
我会发布一些代码,但在这一点上我不知道什么是有用的。(我可以显示IIS Express正在记录的其他信息(如果有的话),但除了显示状态代码500的行外,我不知道在哪里可以找到它。)
在相当早期的开发阶段,我意识到当我希望将某个数据库字段命名为"version“(大写)时,我已经将它命名为"Version”。我在整个解决方案中对该字符串做了一个全局查找/替换,而不是重命名该字段。这个过程有可能是一些重要的东西,但是我已经在“版本”(和“版本”)上做了一个全球性的发现,但是没有发现任何值得注意的东西。
如果我绝对需要的话,我可能会从头开始重新创建这个项目,并希望我不会复制/粘贴相同的问题(或新的问题)到新项目中,但我希望有人能先想出一些更容易尝试的东西。
更新
以下是视图/Shared/_Layout.cshtml的开始:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - Experiment 626</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>以下是App_Start\BundleConfig.cs:
using System.Web;
using System.Web.Optimization;
namespace Experiment626
{
public class BundleConfig
{
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate.min.js",
"~/Scripts/jquery.validate.unobtrusive.min.js"));
// Use the development version of Modernizr to develop with and learn from. Then, when you're
// ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
"~/Scripts/modernizr-*"));
bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
"~/Scripts/bootstrap.js",
"~/Scripts/respond.js"));
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap-theme.css",
"~/Content/site.css"));
}
}
}更新
在Firebug中,对于每个CSS或JavaScript文件,请求和响应头如下所示:
请求标头
GET /Content/site.css HTTP/1.1
Host: localhost:6365
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Referer: http://localhost:6365/
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache响应标头
HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.0
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcV2FsbHkuSGFydHNob3JuXFZpc3VhbCBTdHVkaW8gMjAxM1xQcm9qZWN0c1xFeHBlcmltZW50NjI2XEV4cGVyaW1lbnQ2MjZcQ29udGVudFxzaXRlLmNzcw==?=
Persistent-Auth: true
X-Powered-By: ASP.NET
Date: Tue, 25 Feb 2014 21:13:50 GMT
Content-Length: 5870更新
作为比较,下面是使用Chrome时的请求头:
Accept:text/css,*/*;q=0.1
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Host:localhost:6365
Pragma:no-cache
Referer:http://localhost:6365/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36更新
在IIS显示的默认错误页中,有一个详细的错误信息部分,其中包含:
Module IIS Web Core
Notification AuthenticateRequest
Handler StaticFile
Error Code 0x80070542
Requested URL http://localhost:6365/Content/site.css
Physical Path C:\Users\Wally.Hartshorn\Visual Studio 2013\Projects\Experiment626\Experiment626\Content\site.css
Logon Method NTLM
Logon User SOMEDOMAIN\Wally.Hartshorn
Request Tracing Directory \\something.domain.com\SPIUsers1\Wally.Hartshorn\IISExpress\TraceLogFiles\EXPERIMENT626我仍然无法理解如何查看引发状态代码500的实际异常。
更新
通过研究这些错误代码,我发现这显然意味着“没有提供所需的模拟级别,或者提供的模拟级别无效。”我猜想,处理身份验证的方式与Internet和Google的方式有所不同,但我还不知道如何解决这个问题。
更新
作为一个实验,我在Visual 2013中创建了一个全新的Windows项目,选择ASP.NET身份验证。然后,在不让对这一全新解决方案进行任何更改的情况下,我点击Ctrl-F5构建它,并在火狐中打开默认主页。我在未接触的项目-- HTTP错误500.0中获得了完全相同的错误,错误代码为0x80070542,指示“没有提供所需的模拟级别,或者提供的模拟级别无效”。
因此,这显然与我的代码无关,而是与我的Visual 2013、IIS Express和/或Windows 7的配置方式有关的一个基本问题。
我很困惑。
发布于 2014-02-26 21:33:22
G_P向我指出了解决我的问题的方法。根本原因显然是Firefox默认情况下不使用Windows集成身份验证,除非该站点是可信的。
要在Firefox中启用Windows集成身份验证:
about:config。network.automatic。network.automatic-ntlm-auth.trusted-uris.localhost或mycompany.com。在那之后,一切都很顺利。
不幸的是,这将意味着指示公司中每一个想使用Firefox访问应用程序的人,他们必须进行这种更改(否则IT部门必须想出一种方法来实现这一点)。在这个特定的应用程序中,这并不是什么大问题,因为用户数量将非常少。对于以后的应用程序,我可能需要想出其他的方法。(也许我应该调查一下Windows身份基金会?不过听起来有点吓人。)
无论如何,我会称之为“现在已经够好了”,继续我的生活。非常感谢,,感谢每一个帮助我的人!
P.S.有潜在有用信息的两页:
发布于 2014-02-25 20:28:19
您在前面的浏览器上创建了一个cookie,该浏览器是在firefox上不存在的。我真的很怀疑这个问题是否与firefox有关。
https://stackoverflow.com/questions/22025007
复制相似问题