记一次Url重写_发布之后iis 404
把api封装完,客户要求app的url能不能不变(客户之前用的php的api开发app,已经开发了很多了,所以希望不改动url)。但是这个规则要求是:xx/api.php?s=/{controller}/{action}&{parms},而我的直接就是xx/{controller}/{action} ?parms。改动web api的路由却不能包含“?”这个特殊字符。而且api.php之后都是参数,而我action之后才是参数。所以必须重写Url。
public class UrlWriter : IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
} void context_BeginRequest(object sender, EventArgs e)
{
//获得当前页面请求管道的HttpApplication对象
HttpApplication application = sender as HttpApplication;
HttpContext context = application.Context;//获得上下文对象
//string url = context.Request.Url.LocalPath;//获得URL(不包含域名和路径)
string url = context.Request.Url.AbsoluteUri;//获得URL(不包含域名和路径)
//api.php?s= /controller/action&name=miyu&pwd=123 ---> controller/action?parms=
Regex reg1 = new Regex("/WebForm2/[A-Z0-9a-z_]+");//注意文件夹与文件名称的大小写.
if (url.Contains("api.php?s=")) //这种情况是匹配根据ID值来查看某个文章的内容。
{
url = url.Replace("api.php?s=", "|");
var controller = "";
var action = "";
var parms = "";
var baseurl = url.Split('|')[]; //得到 类似于User/Login&.... 或者 User/Login ....
if (baseurl.Contains("&"))
{
var cap = baseurl.Split('&');
var ca = cap[].Split('/');
controller = ca[];
action = ca[];
//User/login&name=miyu&pwd=123
parms = "?";
for (int i = ; i <= cap.Length-; i++)
{
if (i < cap.Length - ) //共有cap.length-1个参数
{
parms += cap[i] + "&";
}
else
{
parms += cap[i] ;//最后一个参数 不需要再加&
}
}
}
else
{
var ca = baseurl.Split('/');
controller = ca[];
action = ca[];
} var newurl = string.Format("/api/{0}/{1}{2}", controller, action, parms); context.RewritePath(newurl); //前台的列表页就可以这样写:<a href='../WebForm2/<%#Eval("id")%>'></a>
} } public void Dispose()
{
throw new NotImplementedException();
}
}
然后在web.config中加入:
<httpModules>
<add name="UrlReWriter" type="AS.GroupOn.Web.UrlWriter, AS.GroupOn.Web, Version=1.0.0.0, Culture=neutral" />
</httpModules>
</system.web>
Debug的时候就ok了。但发布上了iis 却404 找不到资源。因为iis将.php 识别成了一个资源文件。
最后找到方法:站点--> 属性--》主目录
点击配置:
可执行文件就是我们的C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll。 (32位选32位的)
扩展名加入 .php
取消判断确认文件是否存在 就ok了。
记一次Url重写_发布之后iis 404的更多相关文章
- URL重写以后发布到IIS找不到页面
1.读取必须勾选,否则无法加载资源文件(img,css等) c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
- url重写后发布出错问题
iis7 配置urlrewriter重写失效的问题 在IIS7下,如果使用微软的 URLRewriter 重写控件则需要在WEB.CONFIG中配置以下信息 第一个配置: <configSect ...
- 微软的坑:Url重写竟然会引起IIS内核模式缓存不工作
万万没有想到!当初为了解决使用负载均衡时记录客户端IP地址的问题,在IIS URL Rewrite Module中增加了一条URL重写规则(详见迁入阿里云后遇到的Request.UserHostAdd ...
- URL重写2.1.mis
概观 IIS URL重写2.1使Web管理员能够创建强大的规则来实现更容易让用户记住的网址,并使搜索引擎更容易找到.通过使用规则模板,重写映射,.NET提供程序和集成到IIS管理器中的其他功能,Web ...
- IIS8如何安装和使用URL重写工具-URL Rewrite
下载和安装URL Rewrite IIS8默认是没有安装URL重写工具的,必须要自己下载安装. 如果IIS上默认有安装Web平台安装程序,我们可以使用平台自动安装URL Rewrite重写工具,打开I ...
- IIS 无法安装URL重写模块的解决办法 UrlReWrite (.NET`SQL技术交流 群号206656202)
下载和安装URL Rewrite IIS8默认是没有安装URL重写工具的,必须要自己下载安装. 如果IIS上默认有安装Web平台安装程序,我们可以使用平台自动安装URL Rewrite重写工具,打开I ...
- IIS URL Rewrite(URL 重写)-使用教程
IIS URL Rewrite(URL 重写)-使用教程 作者:vkvi 来源:千一网络(原创) 日期:2011-8-17 http://www.cftea.com/c/2011/08/9CRXOL ...
- IIS上发布站点后URL重写失效的解决方法
在发布网站时URL重写有可能会失效,如果失效的话就需要您设置一下IIS:1.Windows XP系统或Windows 2003系统等使用以下方法:>打开IIS,主目录-〉配置-〉映射-〉在窗体左 ...
- ASP.NET MVC URL重写与优化(1)-使用Global路由表定制URL
ASP.NET MVC URL重写与优化(1)-使用Global路由表定制URL 引言--- 在现今搜索引擎制霸天下的时代,我们不得不做一些东西来讨好爬虫,进而提示网站的排名来博得一个看得过去的流量. ...
随机推荐
- odoo模块
odoo模块包括 业务对象,web控制器,数据文件,前面2个是Python模块,而数据文件则是odoo特有的文件,例如,odoo数据文件,web数据.这些数据文件在 __odoo__.py 进行定义, ...
- C#数据结构选择
选择一个合适的数据结构会对程序的性能有着显著的提高 线性表和链表: 1.LinkedList<T>:适合于元素数组不固定,存在大量列表的头尾添加动作场合.其它可使用List<T> ...
- .NET平台开发Mongo基础知识
NoSQL简介 NoSQL相关的技术最近越来越受欢迎,Mongo本身就是基于NoSQL实现的.关于NoSQL你需要了解 什么是NoSQL NoSQL和传统的关系型数据库有什么区别 NoSQL的优缺点 ...
- C# 并行编程 之 轻量级手动重置事件的使用
目录(?)[-] 简单介绍 使用超时和取消 跨进程或AppDomain的同步 简单介绍 如果预计操作的等待的时间非常短,可以考虑使用轻量级的手动重置事件,ManualResetEventSlim. ...
- AndroidLinker与SO加壳技术之上篇
1. 前言 Android 系统安全愈发重要,像传统pc安全的可执行文件加固一样,应用加固是Android系统安全中非常重要的一环.目前Android 应用加固可以分为dex加固和Native加固,N ...
- R in a nutshell(连载)
data(cars)dim(cars)names(cars)summary(cars)plot(cars, xlab = "Speed (mph)", ylab = "S ...
- 8421BCD码转换为十进制
这个转换和随意的认知是不同的,要了解BCD码和二进制码的区别 #define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10) ...
- PWM波控制舵机总结
文章转自:http://www.geek-workshop.com/thread-70-1-1.html 一.关于舵机: 舵机(英文叫Servo):它由直流电机.减速齿轮组.传感器和控制电路组成的一套 ...
- VPN帐号(每1小时自动断开及更新密码)
免费的vpn帐号 http://freevpn.wwdhz.com/
- cocos2d 3.X Shader 变暗和变灰
转自http://www.waitingfy.com/archives/1741 1.为了节约一张图引发的Shader使用 我们注意到这个游戏当中经常使用一些按钮,美术会给两张图,一张稍微暗点,表示 ...