博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

伪静态 Url重写 IIS配置的问题

Posted on 2011-11-09 14:07  Honor  阅读(377)  评论(0)    收藏  举报

(推荐了解一下)<a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?mfr=true">微软官方的url重写的问题</a>)

 我是一个技术菜鸟  能写一些技术不是很高的问题或是自己在实际中遇到的问题。

  URL重写有几种方法 但是我自己值简单的了解了其中的两种方法

     一种是:在Global.asax在虚拟的主机上 一般我们调试就是用的虚拟主机 例如

    protected void Application_BeginRequest(object sender, EventArgs e)//伪静态 url重写
        {
           // HttpContext.Current.RewritePath("ViewNews.aspx");
            Regex reg = new Regex(@".+View-(\d+).aspx");
            var match=reg.Match(HttpContext.Current.Request.Url.AbsolutePath);
            if(match.Success)
            {
                string id = match.Groups[1].Value;
                 HttpContext.Current.RewritePath("ViewNews.aspx?id="+id);
            }
        }

   另一种是大家多比较常用的 就是引入第三方插件URLRewriter.dll 然后在修改web.Config配置文件

   首先下载URLRewriter.dll 这个插件 添加到你文件夹中指定的目录或者是bin文件夹中或者是其他的目录

 

  修改配置文件首先

  在<configSections>  节点中添加
    <section name="RewriterConfig" requirePermission="false" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler,URLRewriter" />
   </configSections>

然后在导如你想要写的规则

例如:

 <RewriterConfig>
    <Rules>
         <RewriterRule>  这个节点的意思是 地址栏收到(LookFor)符合这样的伪静态的地址之后 就会导向(SendTo)给<SendTo></SendTo>节点的地址 然后由Asp.net解析引擎去解析和没有设置伪静态是一样的 然后就生成html文件 送给客户端浏览器 大概就是这样一个思路
        <LookFor>~/Buys/(.[0-9]*)\.html</LookFor>
        <SendTo>~/Buys/Show.aspx?id=$1</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>

  <RewriterConfig>这个节点和<configSections>这个节点是平行的

 然后在<system.web></system.web>中加入:

 <httpHandlers>
     <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
      <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
     </httpHandlers>

这个节点中不只存在这两个节点还有其他的一些节点 大家只管添加就是了

我在网上看到有朋友问说“不要配置IIS是不是可以运行?” 不配置IIS的话其实是可以 但是你可能要发布你的网站 那您就还可以稍稍看到我接下来讲的IIS配置的问题

接下来就是配置IIS了  我的系统是 server 2003 iis6.0

 先用vs2008发布你的网站 然后在新建一个网站或者是虚拟目录

操作方法:IIS站点属性 ->主目录 ->  应用程序配置
  在应用程序扩展中 点击添加    选择或输入C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll  取消"确认文件是否存在"前的钩.

 

然后点击确定

同时 还要在通配符应用程序映射下 再一次 选择C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll(我的是F盘)


取消"确认文件是否存在"前的钩.

然后就OK 了 网上有有一些朋友出现错误 

分析器错误消息: 未能加载文件或程序集“UrlRewritingNet.UrlRewriter”或它的某一个依赖项。系统找不到指定的文件 web.config

 是因为URLRewriter.dll 版本的问题 我的这个插件有20kb以前老报错的那个只有8kb 我上传了一下大家可以选择下载

<a href='https://files.cnblogs.com/Johnrawls/URLRewriter%E7%BB%84%E4%BB%B6.rar'>URLRewriter</a>

 

xp中的IIS服务不能启动 是有与微软的 Windows xp更新的bug的问题 您可以参照网上的方法 把补丁卸载

 

最后我在 iis配置的 时候突然报错了

MS-sql 2005拒绝了对对象 'xxx' (数据库 'xxx',架构 'dbo')的 SELECT 权限

MS-sql 2005拒绝了对对象 'xxx' (数据库 'xxx',架构 'dbo')的 SELECT 权限(转载的)
问题:Sql server 2005 默认设置下不允许远程登陆
1 外围设置 tcp/ip 和 named pipe 同时启用
2 服务器 --〉属性 --〉安全性 --〉sql server 和windows 认证模式

问题: 拒绝了对对象 'xxx' (数据库 'xxx',架构 'dbo')的 SELECT 权限。
答案: 数据库(xxx) --->安全性---->架构---->dbo(属性)--->权限--->添加--->浏览-->
[public]---->具有授予权限(select)