Tag: iis 8

.Net MVC自定义错误页面在IIS8中不起作用

我有一个.NET MVC应用程序,我在使用IIS 8的服务器上运行自定义错误页面时遇到问题。在我的应用程序中,我正在捕捉并正确地抛出exception并在我的错误页面上显示一条消息,该页面是自定义的他们的违规行为。 当在调试中通过VS运行应用程序时以及在IIS(6.1)中的本地主机上配置站点时,这一切都在本地运行良好。 然后我将其部署到安装了IIS 8的服务器上。 最初我得到了令人讨厌的默认500错误页面: 默认500错误页面http://img202.imageshack.us/img202/1352/b8gr.png 在做了一点研究之后,我发现我可以将以下内容添加到web.config中,至少会把我的友好错误页面给我,虽然没有自定义文本: 我正在使用以下filter完成自定义错误消息: public class GlobalExceptionFilter : FilterAttribute, IExceptionFilter { public void OnException(ExceptionContext filterContext) { if (filterContext.HttpContext.IsCustomErrorEnabled && !filterContext.ExceptionHandled) { filterContext.ExceptionHandled = true; filterContext.HttpContext.Response.StatusCode = 500; string controllerName = (string)filterContext.RouteData.Values[“controller”]; string actionName = (string)filterContext.RouteData.Values[“action”]; HandleErrorInfo info = new HandleErrorInfo(filterContext.Exception, controllerName, actionName); IControllerFactory factory = ControllerBuilder.Current.GetControllerFactory(); ErrorController newController = […]

检索具有CLSID {688EEEE5-6A7E-422F-B2E1-6AF00DC944A6}的组件的COM类工厂失败

我正在创建停止IIS默认网站的应用程序。 我使用PowerShell脚本来停止网站,因为该脚本是从我的网站执行的。 这是我的脚本: Import-Module C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration Stop-Website ‘Default Web Site’ my copy code Start-Website ‘Default Web Site’ 这是我的C#代码: PowerShell _PowerShell = PowerShell.Create(); Runspace rs = RunspaceFactory.CreateRunspace(); rs.Open(); _PowerShell.Runspace = rs; _PowerShell.AddScript(@”Set-ExecutionPolicy RemoteSigned -scope LocalMachine”).Invoke(); _PowerShell.AddScript(@”E:\DE.TEST\Power_Shell\Scripts\StopIISDefaultSite.ps1″).Invoke(); if (_PowerShell.HadErrors) { Collection errors = _PowerShell.Streams.Error.ReadAll(); foreach (var item in errors) { Console.WriteLine(item.ToString()); } } Console.ReadLine(); 它显示以下错误 检索具有CLSID {688EEEE5-6A7E-422F-B2E1-6AF00DC944A6}的组件的COM类工厂由于以下错误而失败:80040154未注册类(HRESULTexception:0x80040154(REGDB_E_CLASSNOTREG))。

无法访问IIS 8上虚拟dotnet核心api应用程序下的虚拟目录

我正在尝试将虚拟目录添加到我的dotnet核心API。 但它给了我一个404。 This api.project.nl page can’t be found No web page was found for the web address: https://api.project.nl/v1/uploads/profiles/profile.jpeg 我已经在主IIS网站下将我的api设置为v1 ,如下面的IIS项目配置中所示。 api工作正常,我甚至可以访问我的wwwroot的/docs文件夹,它提供index.html (用于自定义swagger ui文档)。 我可以访问Projects – Api文件夹下的uploads文件夹 https://api.project.nl/uploads/profiles/profile.jpeg 但它无法访问v1虚拟应用程序下的uploads文件夹。 https://api.project.nl/v1/uploads/profiles/profile.jpeg 知道为什么吗? 我不确定它是否可能,会对这方面的一些指示表示赞赏。 我已经看到了一些相关的问题,例如这里,但我的配置只是更进一步。 他们谈论UseFileServer ( 文档和他们让它使用它,但我似乎无法让它工作所有。不确定我需要它。 不确定是否需要,但这是我的StartUp.cs public class Startup { public IConfigurationRoot Configuration { get; } public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() […]

如何在.Net中优雅地关闭双向WebSocket

我有一个WebSocket服务器,它接受来自客户端的二进制数据流,并响应每4MB读取的另一个文本数据流。 服务器使用IIS 8和asp.net web api 。 服务器 public class WebSocketController : ApiController { public HttpResponseMessage Get() { if (!HttpContext.Current.IsWebSocketRequest) { return new HttpResponseMessage(HttpStatusCode.BadRequest); } HttpContext.Current.AcceptWebSocketRequest(async (context) => { try { WebSocket socket = context.WebSocket; byte[] requestBuffer = new byte[4194304]; int offset = 0; while (socket.State == WebSocketState.Open) { var requestSegment = new ArraySegment(requestBuffer, offset, requestBuffer.Length […]

获取Windows登录用户名ASP .net

我在IIS 8上部署了一个具有表单身份validation模式的应用程序。 现在有一个要求,即如果Windows用户和应用程序用户不同,企业希望显示弹出消息并创建审核日志。 为此,我想在应用程序的logincontrol上获取Windows登录用户。 我尝试了很多方法但没有任何帮助。 如果可能,请指导我。 伙计们..请帮帮我……

Preload()的不稳定行为

我在Windows Azure中托管了一个WCF应用程序。 它有IIS v8.0 我已经使用IProcessHostPreloadClient’s Preload()方法进行应用程序预热 现在,我有两个问题: 1)每当我的应用程序池回收时, Preload()函数被调用两次。 我在preload()方法中初始化了一些静态变量,这些变量将在我的工作进程(w3wp.exe)保留。 我所看到的很有趣: 我当前的工作进程ID是( w3wp.exe 1234 ,比方说) 在回收时, preload被调用两次: 第一次:在w3wp.exe中有进程ID : 5678 ,说(一个新的工作进程) 第二次:在w3wp.exe中有进程ID: 1234 (与现有的相同) 现在,我已经配置了我的应用程序池,以便只存在一个w3wp.exe实例。 因此,在发生循环之后,存在的w3wp.exe是进程ID:5678。 我的问题是,为什么一个进程号为1234的死亡w3wp.exe已经执行了预加载 两者之间有3毫秒的差距。 编辑我刚刚了解到,由于应用程序池循环,一个旧的w3wp.exe终止并启动了一个新的w3wp.exe。 导致preload被调用两次的原因是: 1)w3wp.exe的新进程 – 导致在新进程上调用preload()(在我们的示例中为进程ID:5678) 2)w3wp.exe的旧进程(进程ID:1234):其app-domain在被杀死之前重新启动。 因此,当重新启动app域时,会调用preload() 现在,我的问题是为什么一个垂死的w3wp.exe的app-domain重新启动了。 它在接下来的3ms内即将死亡(如上所述) 2)我已经启动了服务,我正在做一些测试。 在此期间,工作进程有时没有提供任何请求。 但我的w3wp.exe有一个连续运行的线程。 我们在一段时间后观察到的是, w3wp.exe的现有实例(进程ID 1234,比如说)突然结束,并且在同一进程中调用了preload()(进程号为1234的w3wp.exe ) 我假设的是,由于某种原因,再次调用预加载。 我曾经认为只有在创建新的w3wp.exe时才会调用preload(反过来意味着app pool已经回收) 这种行为被观察了两次任何人都可以告诉我任何事情 编辑 答案:偏爱:因为app-domain重启。 我仍然不知道为什么app-domain重新启动

IIS编译错误-2146232576 AspNetInitializationExceptionModule

我有一个相当简单的C#WebAPI2项目,它在本地运行但在远程机器(Windows Server 2012 R2 Standard)上发布到IIS后,网页显示以下内容(将customErrors设置为“Off”后): ‘/’应用程序中的服务器错误。 编译错误说明:在编译为此请求提供服务所需的资源期间发生错误。 请查看以下特定错误详细信息并相应地修改源代码。 编译器错误消息:编译器失败,错误代码为-2146232576。 如果我获取详细的编译器输出并在IIS服务器上运行它,我会收到一条智能屏幕错误消息 : 此应用无法在您的PC上运行。 要查找适用于您的PC的版本,请咨询软件发行商。 我猜它与编译器版本有关,但自上次发布以来没有任何变化。 有任何想法吗?