我是一个使用自定义网址重写的旧网站,如下所示:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<add name="URLHandler" type="Lib.URLHandler" preCondition="" />
</modules>
</system.webServer>
现在当我将Signalr添加到这个网站时,它给了我404.后来我注意到删除URLHandler模块使信号器工作。
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
</modules>
</system.webServer>
我无法删除URLHandler,因为它长时间管理大量页面。那么我怎么能让Signalr和URLHandler一起工作呢?
答案 0 :(得分:0)
这是因为它因为更改网址而无法找到生成的代理(var connection = $.hubConnection();
var contosoChatHubProxy = connection.createHubProxy('contosoChatHub');
)?如果是这样,请尝试使用自己的代理(没有生成代理的代码),即:
而不是:
protected JSONObject doInBackground(String... args) {
JSONObject json = null;
GCMRegistrar.checkDevice(context);
GCMRegistrar.checkManifest(context);
final String regId = GCMRegistrar.getRegistrationId(context);
if (regId.equals("")) {
GCMRegistrar.register(context,SENDER_ID);
} else {
if (GCMRegistrar.isRegisteredOnServer(context)) {
Toast.makeText(getApplicationContext(), "Already registered with GCM", Toast.LENGTH_LONG).show();
} else {
UserFunctions userFunction = new UserFunctions();
json = userFunction.registerUser(context,fname, lname, email, password,regId);
}
}
return json;
}
使用:
dplyr
请参阅示例,不使用生成的代理,请在此处阅读:http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client#genproxy
答案 1 :(得分:0)
我找到了一个解决方案,在URLHandler中我添加了一行为我完成工作。
void context_BeginRequest(object sender, EventArgs e)
{
if (HttpContext.Current.Request.Url.OriginalString.ToLower().Contains("signalr/hubs"))
return;
..............
}
我还尝试使用生成的代理,但它可能有效,但它不像聊天中心那样直接/有用,如chatHub.server&amp; chatHub.client不可用,需要更改完整的代码。