IsapiModule或CgiModule必须在模块列表中

IIS7中默认是已经加载了脚本映射处理。但今天装了个WIN7,装好IIS后却发现没有。于是手动去这安装,在添加html映射时提示:模块列表中必须要有IsapiModule或cgiModule

 

Google了半天找不到原因。后来在找到了答案。方法很简单,在 控制面板 -> 程序和功能 -> 打开或关闭Windows功能(这几步可以简化为Win+R运行OptionalFeatures) -> Internet信息服务 -> 万维网服务 -> 应用程序开发功能,把下面的全部勾上!重启,成功!

 

问题二:由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
IIS的根节点(第一节点 )->右侧“ISAPI和CGI限制”->把禁止的DotNet版本项设置为允许,即可.

 

 

Web.Config 在iis7下必须加以下一段:

==========================================   

 <system.webServer>
        <modules>
            <add name="all" type="URLRewriter.ModuleRewriter" preCondition="managedHandler" />
        </modules>
        <handlers>
            <add name="all" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
            <add name="html" path=".html" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
        </handlers>
    </system.webServer>
</configuration>

 

 

HTTP 错误 404.0 - Not Found

您要找的资源已被删除、已更名或暂时不可用。

 

Asp.net配置伪静态规则

 

第一步从如下任一地址中下载URLRewriter组件:

下载地址1http://download.csdn.net/source/524514

 

同一个项目, 又建另一站点(相同的物理路径,) ,结果出下上图404.0错误, 原来是vista下应用程序池默认的32应用程序属性影响,参考下图,设置为True


下载地址2
http://www.nmju.net/UserFiles/URLRewriter.rar
下载地址3http://download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi

第二步:在网站项目中添加URLRewriter程序集的引用。

第三步:配置webconfig文件:

1、在<configSections></configSections>节点首部加入如下:

 <section name="RewriterConfig" requirePermission="false" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>

2、在<httpHandlers></httpHandlers>之间加入:
 <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
 <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />

3、在<httpModules></httpModules>之间加入

<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/>


4、配置伪静态的语法:在<configuration></configuration>之间加入<RewriterConfig></RewriterConfig>节点。在<RewriterConfig></RewriterConfig>之间加入伪静态规则:

 <Rules>
      <!--
定义伪静态第一条规则开始
-->
      <RewriterRule>
        <LookFor>~/xxxx/view(.[/d]*)/.html</LookFor>
        <SendTo>~/xxxx/view.aspx?id=$1</SendTo>
      </RewriterRule>

  <!--定义伪静态第一条规则结束-->
 <!--
定义伪静态第二条规则开始
-->
      <RewriterRule>
        <LookFor>~/yyyy/(.[/d]*)/view.html</LookFor>
        <SendTo>~/yyyy/view.aspx?id=$1</SendTo>
      </RewriterRule>

 <!--定义伪静态第三条规则结束 以此类推-->

</Rules>

 第四部:配置IIS7.5 IIS7.0

   1、新建一个应用程序池:名称:任意如:webapp;选择net FrameWork版本(如果你的网站时候2.0的话就选择2.0,我的是4.0)在此我选择Net FramWork v 4.030319. 托管管道模式先暂时设置为集成模式。等下面的设置完成之后再将托管管道模式设置为经典模式。如果下面的设置完成之后不把应用程序设置为经典模式的话,伪静态的功能可以实现,但是页面的样式图片不能正常显示这是设置的关键。

   2、新建一个网站 website ,将此站点的应用程序程序池设置为webapp

   3、选中你的站点比如website ,并且切换到功能视图。双击【处理程序映射】在打开窗口右侧的操作栏目下做如下操作。

      3.1、【添加脚本映射】-路径为:*.html.可执行文件为:C:/Windows/Microsoft.NET/Framework/v4.0.30319/aspnet_isapi.dll 注意:如果你的网站是2.0。可执行文件为:C:/Windows/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll 。名称:任意,比如:html.
      3.2
、【添加通配符脚本映射】 请求路径为*。可执行文件和3.1的一模一样,名称任意,比如:All.

      3.3、【托管处理程序映射】(路径:*  可执行文件:System.Web.UI.PageHandlerFactory 名称 任意 比如Html-Integrate)

      3.4、双击website站点切换到站点功能视图。然后双击模块,打开窗口之后在右侧的操作栏目下面,单击【添加托管模块】-》名称:任意 如All  类型:URLRewriter.ModuleRewriter 并且 把【仅针对向asp.net 应用程序或托管处理程序发出请求调用】前面的选项勾上。(记住一定要勾上)。

      3.5、最后一步:双击iis7.07.5的应用程序池。在应用程序池列表中找到【webapp】应用程序池。双击打开之后。将webapp应用程序池的【托管管道模式】设置为经典模式。

值得注意的是第三部中的2,3点可以根据程序设计的需要选其一,在某些不确定的情况下,可能使程序出现异常。

当然在配置iis7.0和iis7.5时还有更简单的方法。将微软官方的url包安装到服务器上,在服务器上导入配置规则文件,

MaxMatchCount 10

RewriteRule ^news/([0-9]+)/.html$ news/xx.aspx?id=$1 #注释

。。。。。

。。。。

NotParsed  foo bar

文件名后缀为.htaccess,将网站暂停,点击UrlWriter,导入规则应用即可,当然在开发过程当中,为了便于测试,最好是将两种方法结合使用,再在web.config中将相关的urlwriter重写配置项注释或删除即可!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
具体实现过程如下: 1. 创建ASP.NET MVC项目,并安装SignalR库 在Visual Studio创建ASP.NET MVC项目,并通过NuGet包管理器安装Microsoft.AspNet.SignalR库。在项目的Startup.cs文件配置SignalR间件: ```csharp public void Configuration(IAppBuilder app) { app.MapSignalR(); } ``` 2. 创建SignalR Hub类 在项目创建一个SignalR Hub类,继承自Microsoft.AspNet.SignalR.Hub类,用于实现客户端和服务器端的交互。在Hub类定义客户端和服务器端的方法,用于接收和发送聊天消息: ```csharp public class ChatHub : Hub { public void SendMessage(string user, string message) { // 将消息广播给所有连接的客户端 Clients.All.broadcastMessage(user, message); } } ``` 3. 创建Winform应用程序,并安装SignalR客户端库 在Visual Studio创建Winform应用程序,并通过NuGet包管理器安装Microsoft.AspNet.SignalR.Client库。在Winform应用程序,创建SignalR客户端对象,并连接到Web应用程序的SignalR Hub: ```csharp var hubConnection = new HubConnection("http://localhost:port"); var hubProxy = hubConnection.CreateHubProxy("ChatHub"); hubConnection.Start().Wait(); ``` 4. 实现聊天界面和发送消息功能 在Winform应用程序实现聊天界面,包括显示聊天消息的控件和输入聊天消息的控件。当用户输入聊天消息并点击发送按钮时,通过SignalR客户端发送消息: ```csharp private void SendMessage() { var user = txtUser.Text; var message = txtMessage.Text; hubProxy.Invoke("SendMessage", user, message); txtMessage.Text = string.Empty; } ``` 5. 接收并显示服务器端发送的聊天消息 在Winform应用程序订阅服务器端发送的聊天消息,并将其显示在聊天界面上: ```csharp hubProxy.On<string, string>("broadcastMessage", (user, message) => { var chatMessage = $"{user}: {message}"; lstChat.Items.Add(chatMessage); }); ``` 完整的代码实现如下: Web应用程序: ChatHub.cs: ```csharp public class ChatHub : Hub { public void SendMessage(string user, string message) { // 将消息广播给所有连接的客户端 Clients.All.broadcastMessage(user, message); } } ``` Startup.cs: ```csharp public void Configuration(IAppBuilder app) { app.MapSignalR(); } ``` Winform应用程序: MainForm.cs: ```csharp public partial class MainForm : Form { private readonly HubConnection hubConnection; private readonly IHubProxy hubProxy; public MainForm() { InitializeComponent(); // 创建SignalR客户端对象,并连接到SignalR Hub hubConnection = new HubConnection("http://localhost:port"); hubProxy = hubConnection.CreateHubProxy("ChatHub"); hubConnection.Start().Wait(); // 订阅服务器端广播的聊天消息 hubProxy.On<string, string>("broadcastMessage", (user, message) => { var chatMessage = $"{user}: {message}"; lstChat.Items.Add(chatMessage); }); } private void btnSend_Click(object sender, EventArgs e) { SendMessage(); } private void SendMessage() { var user = txtUser.Text; var message = txtMessage.Text; hubProxy.Invoke("SendMessage", user, message); txtMessage.Text = string.Empty; } } ``` 需要注意的是,代码的端口号需要替换成实际的端口号。此外,还需要在Web应用程序的Web.config文件添加SignalR的配置: ```xml <system.webServer> <modules runAllManagedModulesForAllRequests="true"> <remove name="WebDAVModule" /> </modules> <validation validateIntegratedModeConfiguration="false" /> <handlers> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> <add name="Owin" verb="" path="signalr" type="Microsoft.AspNet.SignalR.Owin.Middleware.HubDispatcherMiddleware, Microsoft.AspNet.SignalR.Core, Version=2.4.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </handlers> <modules> <remove name="WebDAVModule" /> <add name="Owin" type="Microsoft.AspNet.SignalR.Owin.Startup, Microsoft.AspNet.SignalR.Core, Version=2.4.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </modules> </system.webServer> ``` 这样就可以实现基于Winform和Web应用程序的聊天功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值