Tag: iis

有没有办法在.Net中创建“自托管”网站?

与WCF Self Hosting相似。 有没有办法在控制台应用程序或dll创建一个“自托管”的网站? 可能是提出这个问题的错误方式,但我想做的是使用这个网站将结果分割为网页而不在IIS创建网站。 谢谢。

DLL版本控制错误

我有一个偶尔会抛出以下错误的网站: ‘/’应用程序中的服务器错误。 无法加载文件或程序集’ICSharpCode.SharpZipLib,Version = 0.85.3.365,Culture = neutral,PublicKeyToken = 1b03e6acf1164f73’或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 (HRESULTexception:0x80131040) 现在我知道我确实依赖于这个DLL,但我的系统上有0.85.5版本。 我已经从服务器系统地删除了每个旧版本的DLL,重新编译了所有内容并重新发布。 但无论我做什么,似乎每次重新发布后,有人访问该网站的前一两次,他们都会收到此错误。 然后刷新一次或两次后,错误消失,网站正常运行。 让我更奇怪的是,如果我查看抛出错误的代码行: URLRewriter.ProcessRewritingResult(status, excludedEnum, siteName, viewMode, relativePath); URLRewriter是来自第三方软件包( Kentico CMS – CMS.URLRewritingEngine.dll)的类。 我在该DLL上运行了Dependency Walker,并且在ICSharpCode.SharpZipLib上找不到任何依赖项。 任何想法如何解决这一问题? 编辑:在@ JeremyThompson的建议下,我运行了Process Monitor来捕获错误。 这是一个屏幕转储,突出显示相关部分(出于隐私原因,一个文件夹名称被隐藏)。 您可以通过右键单击它来查看它的完整大小等… 编辑:这是错误的负载跟踪。 这有帮助吗? ===预绑定状态信息=== 日志:用户= MY-SERVER-12 \管理员 日志:DisplayName = ICSharpCode.SharpZipLib,Version = 0.85.3.365,Culture = neutral,PublicKeyToken = 1b03e6acf1164f73(完全指定) 日志:Appbase = file:/// C:/ inetpub / […]

在ASP.NET中是否可以单独从HTTP请求的用户代理字符串派生浏览器MajorVersion?

我们有一个应用程序,它使用Request.Browser.MajorVersion作为缓存键的一部分。 我们很难确定哪个缓存密钥用于一组历史请求。 为此,我们正在分析IIS日志,因此需要为每个请求确定ASP.NET的Request.Browser.MajorVersion的值。 是否可以单独从用户代理字符串派生出来? UPDATE 我最初假设Request.Browser.MajorVersion的值将是直接从用户代理字符串获取的版本。 但是,在调试会话中确认这个理论我看到了: 我本来期望Request.Browser.MajorVersion是61,而不是44.任何人都可以提供任何有关这些值不同的见解,以及我如何能够自信地告诉Request.Browser.MajorVersion对于给定的值是什么用户代理字符串? 更新2 我发现ASP.NET使用一组模板来构建HttpBrowserCapabilities对象集作为Request.Browser 。 这些可以在这里找到: %SYSTEMROOT%\ Microsoft.NET \框架[版] \配置\浏览器 查看模板,它们都使用正则表达式来解析用户代理字符串(我已粘贴下面的chrome.browser的内容),这表明Request.Browser.MajorVersion 应该与用户代理字符串中的值相对应。 所以仍然不知道为什么我的本地应用程序返回44作为该值。 更新3 我终于到底了。 事实certificate,我正在调试的应用程序使用名为51 Degrees的第三方服务拦截请求并应用自己的请求标头解析,在这种情况下使用本地安装在应用程序服务器上的数据库。 该数据库已经过时,因此对于最近的浏览器版本产生了奇怪的结果。 我在上面的Update 2中的详细信息对于vanilla ASP.NET应用程序是有效的,但这确实解释了为什么我的结果偏离了vanilla测试环境。 感谢所有不遗余力帮助我调查此事的人。

IIS是否为每个连接的用户提供一个线程?

我正在研究开发线程安全应用程序。 我知道用户可以在同一个应用程序上使用多个线程(如果CPU使用多个线程)但我不确定会发生什么,以及当有5个用户使用相同的应用程序时,IIS如何处理用户。 IIS做了什么,所有用户都在同一个线程上工作? 或者他们是否分别给出了一个post? 说到IIS,我是新手,所以请耐心等待。 我的问题将帮助我理解是否需要在我的代码中锁定公共静态方法(线程安全很重要)。

无法映射路径’/’。 .net 4.0

我有一个.net应用程序,我刚刚在visual studio 2010中打开,当它在启动时询问我时转换为4.0。 我去尝试构建网站,我收到此错误: Failed to map the path ‘/’. An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. [InvalidOperationException: Failed to map the path ‘/’.] System.Web.Hosting.HostingEnvironment.MapPathActual(VirtualPath virtualPath, Boolean permitNull) +8804446 System.Web.Hosting.HostingEnvironment.MapPathInternal(VirtualPath virtualPath) […]

IIS虚拟目录获取带有过期的预签名URL

在IIS中,有没有办法定义某种过滤规则来拒绝访问虚拟目录中的文件,除非请求是由某种加密查询字符串“预先签名”的? 还有一种方法可以使请求过期吗? 我无法找到控制这个的方法。 我正在寻找的东西与Amazon S3 Amazon.S3.Model.GetPreSignedUrlRequest.Expires属性提供的内容非常类似,但在IIS中。 以下是Amazon S3示例代码的链接。 期望目标的情景: 请求: http://MyServerName/MyFolderThatIsAddedAsAVirtualDirectoryToDefaultWebsiteInIIS/MyImage.jpg默认情况下应始终导致“拒绝访问”。 但是,将特定查询字符串附加到请求URL应该可以访问该文件。 此外,我需要URL在一段时间后过期,直到提供新的有效查询字符串。

尝试连接到远程IIS服务器时出现“拒绝访问” – C#

当我尝试从IIS 5.1下运行的C#应用​​程序连接到远程IIS 6服务器时,我收到“Access Deined”COMException。 有任何想法吗? 我遇到了原始问题的所有相同问题。 更新 – 4/1/09 我找到了这个解决方案( http://www.codeproject.com/KB/cs/Start_Stop_IIS_Website.aspx ),它包含一个连接到IIS服务器以启动和停止网站的窗口应用程序。 我能够在我的工作站上运行它并连接到IIS服务器。 呃….为什么我可以运行这个独立应用程序而不是我的ASP.NET应用程序? 原版的 当我尝试使用DirectoryEntry.Exist方法从远程计算机连接到IIS以检查IIS服务器是否有效时,我收到“拒绝访问”COMException。 string path = string.Format(“IIS://{0}/W3SVC”, server); if(DirectoryEntry.Exist(path)) { //do something is valid…. } 我是一个活动目录组的成员,该组已添加到管理员组到我尝试连接的IIS服务器。 有没有人遇到这个问题,知道如何解决它? 更新: @Kev – 这是一个ASP.NET应用程序。 此外,我可以通过IIS6管理器在没有用户名和密码的情况下连接到远程服务器。 @Chris – 我正在尝试连接到远程服务器以显示虚拟directorys的数量,并确定每个目录的.NET框架版本。 看到这个问题。 @dautzenb – 我的ASP.NET应用程序在IIS 5.1下运行,试图连接到IIS 6服务器。 我可以在远程服务器上的本地ASPNET帐户的安全日志中看到故障审核。 当我尝试调试应用程序时,我在我的域帐户下运行,但仍然拒绝访问。 更新2: @Kev – 我能够建立使用以下重载创建DirectoryEntry对象: public DirectoryEntry ( string path, […]

以编程方式从IIS获取站点状态,返回COM错误

我试图以编程方式从IIS获取我的站点状态,看看它是否已停止,但我一直收到以下错误, 对象标识符不代表有效对象。 (HRESULTexception:0x800710D8) 该应用程序使用ServerManager Site类来访问站点状态。 这是代码, //This is fine, gets back the site var serverManager = new Microsoft.Web.Administration.ServerManager(ConfigPath); var site = serverManager.Sites.FirstOrDefault(x => x.Id == 5); if (site == null) return; var appPoolName = site.Applications[“/”].ApplicationPoolName; //error! var state = site.State; 我已经使用静态站点进行测试以隔离问题,确保站点已启动并运行,所有配置都有效,指向有效的应用程序池…等。 如果您需要更多详细信息,请告诉我们。 这是COM的事吗?

文件上传问题

我需要客户端(最终用户)通过浏览器上传大文件(例如类似于Youtube上传大video文件的场景),文件大小不应超过500M字节。 我使用ASP.Net + C#+ VSTS + IIS 7.0作为我的开发平台。 关于如何处理大文件上传问题的任何想法或良好做法? 任何参考样品或文件都表示赞赏。

HttpClient和ASP.NET Core 2.0 Web服务之间的连接已关闭错误

我有一个在IIS上运行的ASP.NET Core 2.0 Web服务。 控制器的一种方法或多或少看起来像这样: [HttpGet()] public IActionResult Test() { // do some db updates and get data var result = DoSomeStuff(); // serialize data to byte array var output = Serialize(result); return File(output, “application/octet-stream”); } 它执行一些数据库更新,从表中查询记录,序列化数据并将其作为响应发送。 数据以二进制格式发送。 我正在使用MessagePack-CSharp作为序列化程序。 然后我有客户端应用程序与此Web服务进行通信。 它是.NET Standard 2.0库,从.NET 4.6.1控制台应用程序引用。 我使用HttpClient进行请求,并使用HttpResponseMessage.Content.ReadAsByteArrayAsync()来读取响应(具体代码见下文)。 我想做一些测试。 我的桌子有cca。 80列,包含cca。 140000条记录。 所有这些都应该发送给客户。 从db获取数据需要几秒钟,然后它是序列化的所有内容和cca的结果。 34MB被发送给客户。 我有10个客户。 当他们连续调用webservice时,一切正常。 当我强调web服务和并行启动客户端时,我几乎总是会遇到一些错误(通常有一两个失败,有时甚至是4-5)。 […]