Tag: iis

WCF通用字典和了解WCF

好的,我在解决特定问题时遇到了很多困难。 通过服务传输对象。 从概念上讲,它是有道理的……我想? 根据我的阅读,除非已明确定义,否则无法序列化Generic。 所以我想提供我的榜样; 我根本无法上class。 意思是; 我确信还有其他人也遇到了一些困难。 当你提供帮助时,如果你能提供代码; 这将起作用并解释它。 这样我就可以完全理解这个问题。 这对我很有帮助,了解Windows Communication Foundation。 目标是一个客户端应用程序,它只有五个字段; 在其中“发布”到服务器。 名字 姓 电子邮件地址 电话号码 网站地址 这不是太复杂。 这就是我所做的,在我学习WCF的过程中,我尽可能地将其包含在基于SOA的应用程序中。 这样它就可以提供代码的可重用性。 型号/数据合同: #region Using Reference… using System.Runtime.Serialization; using System.Collections.Generic; using System.Threading.Tasks; using System.Text; using System.Linq; using System; #endregion namespace _2Do.Model.Customer { [DataContract(IsReference = true)] public class Person { #region Declared Variable. string […]

IIS后台线程和SignalR

我需要有一个后台线程来做一些工作,并通过SignalR将数据发送给连接到服务的用户。 我想在IIS中托管这个线程,并在首次命中Application_Start时或在单独的工作进程中生成它。 如果我在IIS中托管它并在应用程序的开头创建它 – 该线程仅在首次点击应用程序时启动。 我一开始服务就需要它运行。 – 我无法通过桌面GUI控制此线程,我无法以简单的方式停止或暂停它。 如果我在一个单独的进程(例如Windows服务)中托管它 – 我无法访问SignalR服务实例 – 我不希望以用户身份连接到SignalR服务以向其他用户发送数据。 我想采用一种不同的方法,这并不意味着工人是SignalR本身的客户。 你对此有何看法? 你还有其他解决方案吗?

无效

我的Web.config包含以下内容: 我不想显示默认的ASP.NET错误页面,所以我清除了我的响应: protected void Application_EndRequest(object sender, EventArgs e) { if (Response.StatusCode >= 400) { Response.Clear(); } } 这将停止显示默认的ASP.NET错误页面。 不幸的是,我的自定义错误页面也没有出现。 即使我的响应为空, PassThrough也不会执行我的自定义错误页面路径(没有命中断点)。 如果我使用existingResponse=”Replace” ,一切正常,但为什么它不适用于PassThrough ?

根文件夹的asp.net处理程序

我正在使用VS 2010,.NET 4.0,ASP.NET Web应用程序项目。 我有自定义HttpHandler来处理* .aspx。 在根文件夹中,我有Default.aspx页面,它只用于捕获根文件夹访问权限并将请求重定向到其他.aspx页面,该请求由我的自定义处理程序进一步处理。 如果请求被定向到根文件夹,则将处理Default.aspx。 如果请求被发送到* .aspx(任何其他,然后Default.aspx)我的自定义处理程序将处理它。 我想从项目中删除Default.aspx页面,并仍然能够捕获对我的根应用程序文件夹的请求,并将请求重定向到我的自定义处理程序。 我试过在Global.asax中注册一个路由: private void RegisterRoutes(RouteCollection routes) { routes.MapPageRoute(“Default”, “”, “~/Default.aspx”); } 那没用。 另外,我已经尝试在web.config处理程序中注册: 但那也行不通。 更新: 实际上,在web.config path=”*”中定义的处理程序确实有效,但它会捕获所有对服务器的请求,我认为这不是一个好习惯。 我创建了DefaultModule,其中在BeginRequest事件中我检查Request中的Path属性并假设它是对默认页面的请求。 到目前为止,这么好,但我不确定它是否适用于所有情况,这里是代码: public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(context_BeginRequest); } void context_BeginRequest(object sender, EventArgs e) { HttpRequest request = HttpContext.Current.Request; if (request.Path == “/”) { HttpContext.Current.RewritePath(“custom.aspx”); […]

WCF:OperationContext.IncomingMessageProperties.Via返回错误的URI

我在IIS中托管WCF服务。 我在IIS中为站点设置了多个主机名绑定。 但是,在向任何非默认绑定发出请求时,OperationContext.IncomingMessageProperties.Via属性不会报告正确的URL。 报告的URL使用默认绑定的主机名作为基础,具有相同的路径和查询字符串。 例如,假设以下绑定: http://subfoo.services.myapp.com (first/default entry) http://subbar.services.myapp.com 在向http://subbar.services.myapp.com/someservice?id=123提出请求时 Via属性将请求URI报告为: http://subfoo.services.myapp.com/someservice?id=123 : http://subfoo.services.myapp.com/someservice?id=123 id = http://subfoo.services.myapp.com/someservice?id=123 如何获取具有所请求的实际主机名的URL?

无法加载文件或程序集’System.Web.Http.WebHost’

将MVC网页部署到我的IIS后,我收到以下错误: Could not load file or assembly ‘System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the file specified. 我已完成以下更改以防止此问题: 为webhost设置Copy Local = True 从nuget添加了WebApi 2.2 System.Web.Http.WebHost存在于i bin文件夹中 我的web.config有以下dependentAssembly: 码: 我仍然得到错误,我做错了什么?

底层连接在HttpWebRequest POST上关闭在生产服务器上

我得到了“底层连接已关闭:连接意外关闭。” 尝试使用生产服务器上的HttpWebRequest类进行POST时出错,在我的开发机器上运行正常。 我最初尝试使用WebClient类,但我转而使用HttpWebRequest来尝试我在研究问题时找到的一些建议(例如将KeepAlive设置为false,将PreAuthenticate设置为true,将ProtocolVersion设置为1.0)。 由于它只发生在生产服务器上,我猜它可能与IIS有关。 这是我的代码 HttpWebRequest HttpWReq = (HttpWebRequest)WebRequest.Create(webURL); ASCIIEncoding encoding=new ASCIIEncoding(); Byte[] postbytes = Encoding.ASCII.GetBytes(data); HttpWReq.Headers.Add(“Authorization”, String.Format(“Basic {0}”, authstring)); HttpWReq.KeepAlive = false; HttpWReq.PreAuthenticate = true; HttpWReq.Credentials = CredentialCache.DefaultCredentials; HttpWReq.UseDefaultCredentials = true; HttpWReq.ProtocolVersion = HttpVersion.Version10; HttpWReq.Method = “POST”; HttpWReq.ContentType = “application/x-www-form-urlencoded”; HttpWReq.ContentLength = postbytes.Length; Stream newStream = HttpWReq.GetRequestStream(); newStream.Write(postbytes, 0, postbytes.Length); newStream.Close(); 我最初尝试使用WebClient类的代码 /* WebClient […]

服务器上的GetThumbnailImage中的C#内存不足exception

我正在运行以下代码,以便在用户向我们发送图像时创建缩略图: public int AddThumbnail(byte[] originalImage, File parentFile) { File tnFile = null; try { System.Drawing.Image image; using (System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(originalImage)) { image = System.Drawing.Image.FromStream(memoryStream); } Log.Write(“Original image width of [” + image.Width.ToString() + “] and height of [” + image.Height.ToString() + “]”); //dimensions need to be changeable double factor = (double)m_thumbnailWidth / (double)image.Width; […]

添加双httpHeaders

我想在我的回复中添加httpHeader 我想用这个代码: private void AddCustomHeader() { if (string.IsNullOrEmpty(HttpContext.Response.Headers.Get(“Access-Control-Allow-Origin”))) { // Custom header HttpContext.Response.AddHeader(“Access-Control-Allow-Origin”, “*”); } } 但是当使用VS_server运行时,它将始终在localhost上失败 This operation requires IIS integrated pipeline mode. 如果我添加已存在的标题会发生什么? HttpContext.Response.AddHeader(“name”,”value”);

‘MSDAORA.1’提供程序未在本地计算机上注册

我有一个应用程序连接到数据库,提取信息,创建一个Excel文件,然后删除文件/电子邮件X人文件。 该应用程序是使用.NET 2.0 Framework(Windows Form App)在Visual Studios中创建的。 它是在32位服务器上运行的。 但它最近被转移到64位服务器。 它现在返回错误消息“’MSDAORA.1’提供程序未在本地计算机上注册。” 我相信MSDAORA仅支持32位应用程序,并且在IIS中运行的应用程序池不适用于32位应用程序。 我将如何解决这个问题,我可以在IIS中更改一些内容吗? 或者是代码更改?