我在使用ServiceStack在IIS6中使用HTTPS时遇到问题,我似乎无法找到有关设置它的任何文档.目前我有一个类似的端点设置 - http://example.com/api.ashx.当我浏览到这个时,我得到了有用的ServiceStack生成页面,该页面解释了http://example.com/api.ashx/metadata上提供的API .当我浏览到https://example.com/api.ashx(注意https)时,我得到此错误消息 -
'/'应用程序中的服务器错误.无法找到该资源.说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用.请查看以下网址,确保拼写正确.请求的URL:/api.ashx
我在web.config中设置了以下内容(例如这里 - http://www.servicestack.net/ServiceStack.Hello/) -
<!-- ServiceStack: Required to host at: /api.ashx -->
<location path="api.ashx">
<system.web>
<httpHandlers>
<add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/>
</httpHandlers>
</system.web>
Run Code Online (Sandbox Code Playgroud)
在我的本地Windows 7机箱上,我正在运行IIS7,它工作正常,但测试和实时环境仍在使用IIS6,我无法让它在那里工作.
使用https时,其他常规aspx页面正常工作.
我很感激任何能够推动我朝着正确方向前进的人!
不要认为标题可以解释我正在谈论的内容,这有点难以解释,所以我会让代码进行讨论.您可以将其复制+粘贴到LINQPad中并作为C#程序运行,或者在visual studio中作为常规c#项目进行必要的调整(例如:将调用转换为Dump()到Console.Writeline()等) -
请注意,如果取消注释doStuff方法中的行,它将无法编译.
我的问题是,为什么我需要在generic2实现时使用强制转换Iab<TA,TB>?这是一些协方差的事吗?我还在使用.NET 3.5.
void Main()
{
doStuff<a,b>();
}
public void doStuff<TA, TB>()
where TA : class, Ia, new()
where TB : class, Ib, new()
{
Iab<TA, TB> x = null;
x = new generic1<TA, TB>();
x.Go().Dump();
//x = new generic2<TA>(); // <-Cannot implicitly convert type 'UserQuery.generic2<TA>' to 'UserQuery.Iab<TA,TB>'. An explicit conversion exists (are you missing a cast?)
x = (Iab<TA, TB>) new generic2<TA>();
x.Go().Dump();
}
public interface Ia
{}
public interface Ib
{}
public class …Run Code Online (Sandbox Code Playgroud)